学习资源来自CSDN大佬浅墨的著作《OpenCV3编程入门》
首先附上书籍中利用鼠标消息绘制矩形的C++代码:
/*动态绘制矩形*/
#include "stdafx.h"
#include <opencv2\opencv.hpp>
using namespace cv;
#define WINDOW_NAME "鼠标绘制矩形"
void on_MouseHandle(int event, int x, int y, int flags, void* param);
void DrawRectangle(Mat& img, Rect box);
Rect g_rectangle;
bool g_bDrawingBox = false;
RNG g_rng(12345);//RNG是随机数生成器
int main()
{
Mat srcImg(600, 800, CV_8UC3)/*8位3通道图像*/, tempImage;
srcImg = Scalar::all(0);//全黑
namedWindow(WINDOW_NAME);
setMouseCallback(WINDOW_NAME, on_MouseHandle, (void*)&srcImg);
while (1)
{
/*形成拖动矩形*/
srcImg.copyTo(tempImage);//每次都用srcImg覆盖一下画面,当鼠标弹起时才会改变srcImg
if (g_bDrawingBox)
DrawRectangle(tempImage, g_rectangle);
imshow(WINDOW_NAME, tempImage);
if (waitKey(10) == 27) break;
}
return 1;
}
void on_MouseHandle(int event, int x, int y, int flags, void* param)
{
Mat& im