代码:
#include <opencv2\opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
Point2i startP;
void myMouseevent(int event, int x, int y, int flags, void* userdata) {
Mat dst= (*(Mat*)userdata).clone();
if (event == EVENT_LBUTTONDOWN) {
startP.x = x;
startP.y = y;
}
if ( flags == EVENT_FLAG_LBUTTON) {
Rect rect(startP.x, startP.y, x - startP.x, y - startP.y);
rectangle(dst, rect, Scalar(0, 0, 250), 2,4);
imshow("image show", dst);
}
if (event == EVENT_LBUTTONUP ) {
Rect rect(startP.x, startP.y, x - startP.x, y - startP.y);
rectangle(*(Mat *)userdata, rect, Scalar(0, 0, 250), 2, 4);
imshow("image show", *(Mat*)userdata);
}
}
void mouseEventTest() {
Mat src = imread(path, 1);
namedWindow("image show", WINDOW_AUTOSIZE);
imshow("image show", src);
setMouseCallback("image show", myMouseevent, &src);
waitKey(0);
}
参考资料:
- OpenCV——采用交互方式在图像上画矩形(C++)