OpenCV 2 学习之”鼠标描点画图“

来源:互联网 发布:登录注册页面模板源码 编辑:程序博客网 时间:2024/05/22 05:20

平台:Windows7

软件:VS2013, OpenCV 2.4.9

实现的功能(> _ < )~

鼠标的描点画图。左击描点、连线,右击初始化,”Esc“键退出,”1“变为灰度图。(好简陋的说~~)

使用函数:

circle();

line();

SetMouseCallBack();

回调函数 原型:void onMouse(int,int,int,int,void*);

先放素材:

呆萌喵星人两坨!




废话少说,上码:

#include<iostream>#include<string>#include<opencv2/core/core.hpp>#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>using namespace std;using namespace cv;Mat srcImage, tmpImage, copyImage;Point pt1, pt2;//两点坐标const string wndName("【效果图窗口】");static void onMouse(int, int, int, int, void*);//SetMouseCallBack的回调函数int main(){system("color 2F");//设定界面颜色const string fileName(...mao.jpg");//文件路径,如:“E://mao.jpg“srcImage = imread(fileName);//读取图片if (!srcImage.data)//判断是否读取成功{cout << "Can not read this file" << endl;//读取失败提示return false;}imshow("【原图窗口】", srcImage);//显示原图片namedWindow(wndName);//初始化窗口,注意:主函数中一定要先声明窗口名,不然无法回调函数onMuse();copyImage = srcImage.clone();// 复制原图片tmpImage = Mat::zeros(srcImage.size(), CV_8UC1);//初始化掩膜(全黑)setMouseCallback(wndName, onMouse, 0);//回调onMouse(),获取鼠标信息while (true){imshow(wndName, copyImage);//显示鼠标操作窗口imshow("【掩膜窗口】", tmpImage);//显示掩膜窗口int key = waitKey(10);//读入键盘操作if (key == 27)//按下”Esc“退出{break;}switch (key){case '1'://按下‘1’,如果当前为RGB图则转换为灰度图,否则初始化if (copyImage.channels() == 3){cvtColor(copyImage, copyImage, CV_BGR2GRAY);}else{copyImage = srcImage.clone();tmpImage = Mat::zeros(srcImage.size(), CV_8UC1);}break;}}return 0;}static void onMouse(int event, int x, int y, int flags, void*){static int i = 0;//点击计数switch (event){case CV_EVENT_LBUTTONDOWN://左击,获取坐标if (i == 0){pt1 = Point(x, y);circle(copyImage, pt1, 3, Scalar(0, 0, 255));//描第一个点}else{pt2 = Point(x, y);circle(copyImage, pt2, 3, Scalar(0, 0, 255));//描点line(copyImage, pt1, pt2, Scalar(0, 255, 0));//与前一点进行连线line(tmpImage, pt1, pt2, Scalar(255));//映射到掩膜pt1 = pt2;}i++;break;case CV_EVENT_RBUTTONDOWN://右击,初始化copyImage = srcImage.clone();tmpImage = Mat::zeros(srcImage.size(), CV_8UC1);i = 0;break;}imshow(wndName, copyImage);}



运行结果:



描了个喵,围住这坨呆萌喵~~~~~

0 0
原创粉丝点击