Opencv学习笔记——画矩形
来源:互联网 发布:泛型编程与stl 编辑:程序博客网 时间:2024/05/18 03:04
通过Opencv自带的函数功能cvRectangle来实现用鼠标画矩形,具体代码如下:
#include "stdio.h"#include "highgui.h"#include "cv.h"void my_mouse_callback(int event,int x,int y,int flags,void *param);CvRect box;/*typedef struct CvRect{ int x; int y; int width; int height;}CvRect;*/bool drawing_box=false;//画矩形函数void draw_box(IplImage *img,CvRect rect){cvRectangle(img,cvPoint(box.x,box.y),cvPoint(box.x+box.width,box.y+box.height),cvScalar(0xff,0x00,0x00));/*函数原型:void cvRectangle( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color,int thickness=1, int line_type=8, int shift=0 );参数介绍:img -- 图像.pt1 -- 矩形的一个顶点。pt2 -- 矩形对角线上的另一个顶点color -- 线条颜色 (RGB) 或亮度(灰度图像 )(grayscale image)。thickness -- 组成矩形的线条的粗细程度。取负值时(如 CV_FILLED)函数绘制填充了色彩的矩形。line_type -- 线条的类型。见cvLine的描述shift -- 坐标点的小数点位数。*/}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);//clone是把所有的都复制过来,也就是说不论你是否设置Roi,Coi等影响copy的参数,clone都会原封不动的克隆过来。 //copy就不一样,只会复制ROI区域等。用clone复制之后,源图像在内存中消失后,复制的图像也变了,而用copy复制,源图像消失后,复制的图像不变cvNamedWindow("Box Example");cvSetMouseCallback("Box Example",my_mouse_callback,(void*)image);while(1){cvCopyImage(image,temp);if(drawing_box){draw_box(temp,box);}cvShowImage("Box Example",temp);if(cvWaitKey(15)==27)//接收到ESC按键{break;}}cvReleaseImage(&image);cvReleaseImage(&temp);cvDestroyWindow("Box Example");printf("Hello World!\n");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;}}
0 0
- Opencv学习笔记——画矩形
- OpenCV学习笔记-用鼠标在窗口中画矩形
- 【OpenCV学习笔记】二十七、轮廓特征属性及应用(四)——正外接矩形
- 【OpenCV学习笔记】二十八、轮廓特征属性及应用(五)——最小外接矩形
- OpenCV学习笔记】二十七、轮廓特征属性及应用(四)——正外接矩形
- OpenCV学习——Highgui演示-简单绘制矩形
- opencv学习笔记(十)画直线、矩形、圆形、椭圆以及多边形程序
- opencv学习笔记(十一)利用鼠标画出一个矩形
- OpenCV—Python 学习笔记
- OpenCV学习笔记(18):在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
- 引用 OpenCV画矩形
- OpenCV画矩形
- OpenCv学习笔记(六):使用opencv画线、矩形、椭圆、多边形线、多边形体等
- OpenCV学习笔记(21)OpenCV的Rect矩形类用法
- openCv学习笔记—cv::Mat学习
- OpenGL学习1—画一个矩形
- Canvas学习笔记之画矩形
- openCV 画矩形框或填充矩形
- Testin云测与ARM 战略合作:推动全球移动应用加速进入中国市场
- sudo ldconfig error
- input子系统二之相关数据结构介绍
- 关于opencv的第一次使用
- 如何在windows下安装flask框架
- Opencv学习笔记——画矩形
- POJ2429_GCD & LCM Inverse【Miller Rabin素数测试】【Pollar Rho整数分解】
- db2 专用工具 dbvisualizer9.1.1版本设置sql自动提示
- 使用Handler定时和使用AlarmManager定时的区别
- 建立使用Cas进行单点登录的应用
- HBase总结(十七)Ganglia监控hadoop、hbase集群
- 5.解决UltraEdit在无网线情况下连接不到虚拟机上的问题,回环网卡设置
- Oracle Package SendMail
- 正则表达式的用法