opencv版本:3.1
setMousecallback用法demo,输出鼠标框出矩形
参考:http://blog.csdn.net/yangtrees/article/details/7573919
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
bool select_flag = false;
Rect select;
Mat img;
void onMouse(int event, int x, int y, int flags, void*param)
{
if (event == CV_EVENT_LBUTTONDOWN)
{
select.x = x;
select.y = y;
select_flag = true;
}
else if (select_flag && event == CV_EVENT_LBUTTONUP)
{
Rect roi = Rect(Point(select.x, select.y), Point(x, y));
select_flag = false;
//显示框出的矩形
rectangle(img, roi, Scalar(0, 255, 0), 2);
cout << "rect x" << roi.x<<" y"<< roi.y;
cout << " rect height" << roi.height << " width" << roi.width << endl;
imshow("img",img);
}
}
int main(int argc, char **argv)
{
namedWindow("img");
img = imread("1.jpg", 1);
imshow("img", img);
setMouseCallback("img", onMouse, 0);
waitKey(0);
system("pause");
return 0;
}