环境Ubuntu18.04,OpenCv4
程序功能是点击鼠标在图上画点
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>
#include <string>
#include <vector>
using namespace cv;
using namespace std;
// global variable
Mat g_img_dst;
string g_window_name = "在图上画点";
Mat g_img_src;
int clickCount = 0;
static void onMouse(int event, int x, int y, int, void *) {
//在opencv3中, EVENT_LBUTTONDOWN需改为CV_EVENT_LBUTTONDOWN
if (EVENT_LBUTTONDOWN == event) { //按下鼠标事件
g_img_dst.copyTo(g_imgMouseMove);
int thickness = -1;
int lineType = 8;
circle(g_img_dst, Point(x, y), 20, Scalar(0, 0, 0), thickness, lineType); //画点
imshow(g_window_name, g_img_dst); //把修改后的图像显示出来
} //在opencv3中, EVENT_LBUTTONUP需改为CV_EVENT_LBUTTONUP
else if (EVENT_LBUTTONUP == event /* && g_startPoint != Point(x, y)*/) { //抬起鼠标事件
clickCount++;
}
}
int main(int argc, char **argv) {
g_img_src=imread("/home/wgh/1.jpg");
if(!g_img_src.data){
cout<<" 图片读取失败 "<<endl;
return 0;
}
g_img_src.copyTo(g_img_dst);
while (true) {
imshow(g_window_name, g_img_dst);
setMouseCallback(g_window_name, onMouse, 0); //开启鼠标事件
waitKey(5);
}
return 0;
}
网友评论