左键红右键蓝,保存为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. 22 mysql有那些”饮鸩止渴”提高性能的方法?

    22 mysql有那些”饮鸩止渴”提高性能的方法? 正常的短连接模式是连接到数据库后,执行很少的SQL语句就断开,下次需要的时候再重新连接.如果使用的是短连接,在业务高峰期的时候,就可能出现连接数突然 ...

  2. Java中的阻塞和非阻塞IO包各自的优劣思考(经典)

    Java中的阻塞和非阻塞IO包各自的优劣思考 NIO 设计背后的基石:反应器模式,用于事件多路分离和分派的体系结构模式. 反应器(Reactor):用于事件多路分离和分派的体系结构模式 通常的,对一个 ...

  3. DFT的补0运算

    在实际的DFT中,如果需要增加采样的密度.这里的采样是频域的采样.可以等到更加密集的谱. 如对于信号 x = [1, 1, 1, 1]做DFT如下图: 不零后的DFT, N = 8, N= 16, N ...

  4. DFS leetcode

    把字符串转换成整数 class Solution { public: int StrToInt(string str) { int n = str.size(), s = 1; long long r ...

  5. 微信小程序之wx.getLocation再次授权问题解决

    首先,在page外定义一个公共函数用于发送获取位置的请求 var getLocation = function (that) { wx.getLocation({ type: 'wgs84', suc ...

  6. Spring Bean定义的三种方式

    <!--Spring容器启动配置(web.xml文件)--> <context-param> <param-name>contextConfigLocation&l ...

  7. java Web 请求servlet绘制验证码简单例子

    主要用来了解java代码怎么绘制验证码图片,实际开发中不会这样用 protected void doGet(HttpServletRequest request, HttpServletRespons ...

  8. ubuntu 安装两个版本的Anaconda

    1.下载anaconda2/anaconda3,下载地址:https://www.anaconda.com/download/#linux,anaconda官网如下所示,选择对应版本下载. 2.使用如 ...

  9. Luogu 2573 [SCOI2012]滑雪

    BZOJ 2753 首先可以按照题目要求的把所有的有向边建出来,然后进去广搜就可以求出第一问的解,然后考虑如何求解第二问,我们把所有搜到的边按照到达的点的高度位第一关键字,边的长度为第二关键字排序之后 ...

  10. 关于wamp中升级PHP+Apache 的问题

    首先个人不建议wamp中升级php版本,如果你不信可以试一试,当你php升级后发想,奥,Apache版本不匹配,然后又去升级Apache,结果搞了半天,弄出来了就好,要是没出来,可能你会气死(好吧,气 ...