实例1:鼠标事件SetMouseCallBack画矩形框截图显示ROI并保存
#include
#include
using namespace std;
using namespace cv;
Mat srcImg, temp, ROI;
Point p;
bool flag =false;
void onMouse(int event, int x, int y, int flags, void* param)
{
switch (event)
{
case EVENT_LBUTTONDOWN: //鼠标左键按下
cout << "EVENT_LBUTTONDOWN" << endl;
p.x = x;
p.y = y;
flag = true;
break;
case EVENT_MOUSEMOVE: //鼠标移动
if (flag==true)
{
temp.copyTo(srcImg);
rectangle(srcImg, p, Point(x, y), Scalar(0,255,0), 2, 8);
}
break;
case EVENT_LBUTTONUP: //鼠标左键抬起
flag = false;
ROI = temp(Rect(p.x, p.y, x - p.x, y - p.y));
imshow("ROI", ROI);
imwrite("ROI.bmp", ROI);
break;
default:
break;
}
}
int main()
{
srcImg = imread("1.png");
temp = srcImg.clone();
namedWindow("Window", WINDOW_NORMAL);
setMouseCallback("Window", onMouse, 0);
while (1)
{
if (waitKey(20) == 27)
{
break;
}
imshow("Window", srcImg);
}
}
实例2:TrackBar滚动条视频播放控制