#include <opencv2/opencv.hpp>
using namespace cv;
Rect select;
bool select_flag = false;
Point origin;
Mat frame;
void onMouse(int event, int x, int y, int flags, void* param)
{
if (select_flag)
{
select.x = MIN(origin.x, x);
select.y = MIN(origin.y, y);
select.width = abs(origin.x - x);
select.height = abs(origin.y - y);
select = select & Rect(0, 0, frame.cols, frame.rows);
}
if (event == CV_EVENT_LBUTTONDOWN)
{
select_flag = true;
origin = Point(x, y);
select = Rect(x, y, 0, 0);
}
else if (event == CV_EVENT_LBUTTONUP)
{
select_flag = false;
}
}
int main()
{
VideoCapture cap(0);
namedWindow("camera");
setMouseCallback("camera", onMouse);
while(1)
{
cap >> frame;
rectangle(frame, select, Scalar(255, 0, 0), 3);
imshow("camera", frame);
if (waitKey(10) == 27) break;
}
return 0;
}