时间:2023-01-27 10:13:35 | 栏目:C代码 | 点击:次
1 在图片上用鼠标进行操作,opencv主要用到setMouseCallback()函数。
winname
窗口名称
onMouse
鼠标事件的回调函数
userdata
传递给回调函数
还有onMouse函数
这里有一个容易搞混的地方
void跟void*
在函数的返回值中, void 是没有任何返回值, 而 void * 是返回任意类型的值的指针.
划线还需要用到line()函数
接下来直接看代码
#include <iostream> #include<opencv.hpp> using namespace std; using namespace cv; Mat img; Point p; void on_monse(int event, int x, int y, int flags, void*) { if (event == 1)//1 左键点击 { p = Point(x, y); } else if (event == 0 && flags == 1)//0 滑动 1左键拖曳 { Point p1(x, y); line(img, p, p1, Scalar(255, 0, 0), 5); p = p1; imshow("www", img); } } int main() { img = imread("星空1.png", 1); imshow("www", img); setMouseCallback("www", on_monse); waitKey(0); }
效果图:
附: