左键红右键蓝,保存为k

#include "opencv2\imgproc\imgproc.hpp"  // Gaussian Blur
#include "opencv2\core\core.hpp" // Basic OpenCV structures (cv::Mat, Scalar)
#include <opencv2\highgui\highgui.hpp> // OpenCV window I/O
#include <iostream> // for standard I/O
#include <string> // for strings
#include <iomanip> // for controlling float print precision
#include <sstream> // string to number conversion
using namespace cv;
using namespace std;
bool rButtonDown = false;
bool lButtonDown = false;
int numUsedBins = 0;
float varianceSquared = 0;
int scribbleRadius = 10;
Mat inputImg = imread("0.jpg", 3), showImg = imread("0.jpg", 3);
Mat fgScribbleMask;
Mat bgScribbleMask; static void onMouse(int event, int x, int y, int, void*)
{
cout << "On Mouse: (" << x << "," << y << ")" <<endl; if (event == CV_EVENT_LBUTTONDOWN)
{
lButtonDown = true; }
else if (event == CV_EVENT_RBUTTONDOWN)
{
rButtonDown = true; }
else if (event == CV_EVENT_LBUTTONUP)
{
lButtonDown = false;
}
else if (event == CV_EVENT_RBUTTONUP)
{
rButtonDown = false;
}
else if (event == CV_EVENT_MOUSEMOVE)
{
if (rButtonDown)
{
// scribble the background
circle(bgScribbleMask, Point(x, y), scribbleRadius, 255, -1);
circle(showImg, Point(x, y), scribbleRadius, CV_RGB(0, 0, 255), -1); }
else if (lButtonDown)
{
// scribble the foreground
circle(showImg, Point(x, y), scribbleRadius, CV_RGB(255, 0, 0), -1);
circle(fgScribbleMask, Point(x, y), scribbleRadius, 255, -1); } } imshow("draw", showImg);
imshow("fg mask", fgScribbleMask);
imshow("bg mask", bgScribbleMask);
}
int main() {
bgScribbleMask.create(2, inputImg.size, CV_8UC1);
bgScribbleMask = 0;
fgScribbleMask.create(2, inputImg.size, CV_8UC1);
fgScribbleMask = 0;
namedWindow("draw");
imshow("draw", showImg);
namedWindow("input");
imshow("input", inputImg); setMouseCallback("draw", onMouse, 0);
while (1) {
  char key = waitKey(0);
  if (key == 'k') { imwrite("1123.jpg", fgScribbleMask); cout << "successed"; }
}
}

  

opencv3.3.1+vs2015+c++实现直接在图像上画掩码,保存掩码图片的更多相关文章

  1. OpenCV3.2.0+VS2015开发环境配置

    vs2015安装可参考:https://www.jianshu.com/p/391e67529bd3 OpenCV3.2.0配置可参考:https://www.jianshu.com/p/026093 ...

  2. OpenCV学习笔记(一)——OpenCV3.1.0+VS2015开发环境配置

    摘要: 由于最近AR(增强现实)这个概念非常火爆,各种基于AR的应用及游戏逐渐面向大众,而在AR中最重要的两个技术就是跟踪识别和增强渲染,其中跟踪识别是通过OpenCV这个开源的计算机视觉库来实现的, ...

  3. OpenCV3.1.0+VS2015开发环境配置

    摘要: 由于最近AR(增强现实)这个概念非常火爆,各种基于AR的应用及游戏逐渐面向大众,而在AR中最重要的两个技术就是跟踪识别和增强渲染,其中跟踪识别是通过OpenCV这个开源的计算机视觉库来实现的, ...

  4. OpenCV3的配置(VS2015)

    1:首先下载和解压到给定的目录 2:设置环境变量...\build\x64\vc14\bin 3:打开VS,新建一个项目,再添加一个代码,刚开始当然是报错的 #include<opencv2\o ...

  5. VS2015自定义工具栏,往工具栏上添加按钮

    工具--自定义--命令

  6. opencv3.2.0实现视频抽帧,并保存成图片

    .实现指定帧数的抽取.和全部帧数的抽取,并保存到指定目录. 在QT新建一个控制台程序,程序源码如下:(程序实现每十帧获取一次帧) #include <QCoreApplication> # ...

  7. opencv3读取视频并保存为图片

    #include <iostream> #include <vector> #include <opencv2/opencv.hpp> using namespac ...

  8. 开源项目(5-2) yolo打包成库

    Windows系统下YOLO动态链接库的封装和调用 Windows10+VS2015+OpenCV3.4.1+CUDA8.0+cuDNN8.0 参考教程 https://blog.csdn.net/s ...

  9. opencv3.1+cmake3.7.2+cuda9.1+vs2015+opencv-contrib+win10x64

    下载cuda https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64&targ ...

随机推荐

  1. PHP5.3.8连接Sql Server SQLSRV30

    PHP5.3连接SQL Server就不能用php_mssql.dll了. 网上下载了好多都不行,因为它的版本是5.2的,不能再PHP5.3中使用. 后来听说微软专门为PHP出了自己的dll. 叫做M ...

  2. window.open()打开新窗口被拦截

    window.open( url )是常用的打开新页面的方法,一般都没有问题,但是如果在ajax回调方法里面使用就会被浏览器拦截,因为在浏览器安全机制中,页面弹窗必须是由用户触发的才是安全弹窗,比如说 ...

  3. 在液晶屏里显示浮点数的方法 (sprintf 的妙用)

    思路:使用 sprintf 函数将浮点型数据转为指定格式的字符串 #include <stdio.h> #include<string.h> int main() { unsi ...

  4. Python 列表学习笔录

    列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表的数据项不需要具有相同的类型.列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类 ...

  5. python--open用法

    open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) #读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式 如:' ...

  6. leetcode693

    class Solution { public: bool hasAlternatingBits(int n) { ; while (n) { ; ) { last = x; } else { if ...

  7. webapi的几种过滤器

    好久没有写博客了 今天就来聊聊asp.net webapi的过滤器们 过滤器主要有这么几种 AuthorizationFilterAttribute 权限验证 ActionFilterAttribut ...

  8. CentOS Firewall简单使用

    启动 systemctl start firewalld 停止 systemctl stop firewalld 获取 firewalld 状态 firewall-cmd --state 在不改变状态 ...

  9. Tornado 接口的实现

  10. day63-webservice 03.解析cxf提供的例子

    Path配置: C:\Program Files (x86)\ScanSign;E:\app\zhongzh\product\11.2.0\dbhome_1\bin;D:\app\zhongzh\pr ...