Opencv学习记录之鼠标窗口响应
2013-07-24 23:31
363 查看
/* * Description: drawing box in the window by opencv. * * by pbImage at 2013-07-24 */ #include <opencv2/opencv.hpp> using namespace cv; Rect box; bool drawing_box = false; void drawBoxEx(Mat& image, CvRect box) { rectangle( image, cvPoint(box.x, box.y), cvPoint(box.x + box.width, box.y + box.height), cv::Scalar(255, 0, 0), 1); } //bounding box mouse callback void mouseHandler(int event, int x, int y, int flags, void *param) { Mat* tmp = (Mat*)param; Mat tempFm = *tmp; switch(event) { case CV_EVENT_MOUSEMOVE: { if (drawing_box) { box.width = x - box.x; box.height = y - box.y; } } break; case CV_EVENT_LBUTTONDOWN: { drawing_box = true; box = cvRect(x, y, 0, 0); } break; case CV_EVENT_LBUTTONUP: { drawing_box = false; if(box.width < 0) { box.x += box.width; box.width *= -1; } if(box.height < 0) { box.y += box.height; box.height *= -1; } drawBoxEx(tempFm, box); } break; } } int main() { VideoCapture camera(0); if (!camera.isOpened()) { printf("Open camera failed\n"); return -1; } namedWindow("video"); Mat frame; camera>>frame; cvSetMouseCallback( "video", mouseHandler, (void*)&frame ); char setMouse = 0; while(1) { camera>>frame; if (box.width > 0 && box.height > 0) { drawBoxEx(frame, box); } imshow("video", frame); if (waitKey(1) == 27) { break; } } return 0; }代码比较简单,贴在这里的目的主要是为了方便自己日后使用,直接copy。当然,同时也分享给OpenCV新成员,欢迎大家进入CV大家庭。
相关文章推荐
- opencv学习心得(一)鼠标响应事件绘制轮廓
- OpenCV学习笔记-用鼠标在窗口中画矩形
- opencv鼠标响应事件学习整理
- Opencv学习之鼠标响应及画图操作
- Opencv学习之鼠标响应及画图操作
- opencv学习心得(一)鼠标响应事件绘制轮廓
- opencv鼠标响应事件学习整理
- OpenCV学习笔记之鼠标响应回调函数setMouseCallback
- opencv 编译 -- 菜鸟学习记录,高手请绕道。
- OpenCV 学习记录2 图像简单处理及调用摄像头
- opencv 绘制直方图学习过程中的疑问记录
- 利用OpenCV鼠标控制窗口大小
- openCV 用鼠标在窗口中画方形
- OpenCV中响应鼠标信息cvSetMouseCallback函数的使用
- opencv 鼠标响应处理
- win32设置窗口的光标 ----- 学习记录
- opencv学习记录1 //cv::gemm()
- openCV学习记录:滤镜:交叉冲印
- 基础学习笔记之opencv(5):实现鼠标选定矩形框
- OpenCV学习笔记(五十七)——在同一窗口显示多幅图片