opencv-鼠标在窗口中画矩形
2017-05-05 10:43
337 查看
#include<iostream> #include <core.hpp> #include <highgui.hpp> #include<cv.h> using namespace cv; using namespace std; void my_mouse_callback( int event, int x, int y, int flags, void* param ); CvRect box; bool drawing_box = false; //绘制矩形函数 void draw_box(IplImage* img, CvRect rect) { cvRectangle( img, CvPoint(box.x, box.y), CvPoint(box.width, box.height), CvScalar(0xff, 0x00, 0x00) ); } int main(int argc,char** argv) { box = cvRect(-1, -1, 0, 0); IplImage* image = cvCreateImage( cvSize(200, 200), IPL_DEPTH_8U, 3 ); cvZero(image); IplImage* temp = cvCloneImage(image); cvNamedWindow("Box-Example", CV_WINDOW_AUTOSIZE); cvSetMouseCallback( "Box-Example", my_mouse_callback, (void*)image ); while (1) { cvCopy(image, temp); if (drawing_box) draw_box(temp, box); cvShowImage("Box-Example", temp); if (cvWaitKey(15) == 27) break; } cvReleaseImage(&image); cvReleaseImage(&temp); cvDestroyAllWindows(); return 0; } //鼠标操作回调函数 void my_mouse_callback(int event, int x, int y, int flags, void* param) { IplImage* image = (IplImage*)param; 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; } draw_box(image, box); break; default: break; } }
相关文章推荐
- OpenCV学习笔记-用鼠标在窗口中画矩形
- 基于opencv用鼠标在窗口中画矩形和线段的程序
- OPENCV2 中视频处理——用鼠标选定矩形框并实时处理显示
- 利用OpenCV鼠标控制窗口大小
- 在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
- 在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
- opencv用鼠标在窗口中画方形的程序
- 鼠标在窗口中画矩形——鼠标事件
- [good]opencv2 使用鼠标绘制矩形并截取和保存矩形区域图像
- opencv鼠标绘制矩形和截取图像的矩形区域
- 用鼠标在窗口中画方形的程序------基于OpenCV+VS
- opencv鼠标画矩形
- Opencv图像识别从零到精通(13)----点线圆矩形与鼠标事件
- OPENCV中例4-1用鼠标在窗口中画方形的程序
- Opencv 用鼠标在窗口中画方形的程序实现_第四章书中源码摘写
- opencv中实现鼠标选定矩形框
- opencv2 使用鼠标绘制矩形并截取和保存矩形区域图像
- OpenCV鼠标画图例程,鼠标绘制矩形
- opencv2 使用鼠标绘制矩形并截取和保存矩形区域图像
- Opencv鼠标描绘矩形框