opencv用鼠标画矩形
2014-06-16 20:02
183 查看
代码来自《learning opencv》
#include<cv.h>
#include<highgui.h>
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.x+box.width,box.y+box.height),
cvScalar(0xff,0x00,0x00)
);
}
int main()
{
box=cvRect(-1,-1,0,0);
IplImage*image=cvCreateImage(
cvSize(500,500),
IPL_DEPTH_8U,
3
);
cvZero(image);
IplImage *temp=cvCloneImage(image);
cvNamedWindow("box1");
cvSetMouseCallback("box1",my_mouse_callback,(void*)image);
while(1)
{
cvCopyImage(image,temp);
if(drawing_box)
draw_box(temp,box);
cvShowImage("box1",temp);
if(cvWaitKey(18)==27)
break;
}
cvReleaseImage(&image);
cvReleaseImage(&temp);
cvDestroyWindow("box1");
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;
}
}
#include<cv.h>
#include<highgui.h>
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.x+box.width,box.y+box.height),
cvScalar(0xff,0x00,0x00)
);
}
int main()
{
box=cvRect(-1,-1,0,0);
IplImage*image=cvCreateImage(
cvSize(500,500),
IPL_DEPTH_8U,
3
);
cvZero(image);
IplImage *temp=cvCloneImage(image);
cvNamedWindow("box1");
cvSetMouseCallback("box1",my_mouse_callback,(void*)image);
while(1)
{
cvCopyImage(image,temp);
if(drawing_box)
draw_box(temp,box);
cvShowImage("box1",temp);
if(cvWaitKey(18)==27)
break;
}
cvReleaseImage(&image);
cvReleaseImage(&temp);
cvDestroyWindow("box1");
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;
}
}
相关文章推荐
- Opencv中利用鼠标绘制矩形
- Opencv鼠标描绘矩形框
- OpenCV鼠标画图例程,鼠标绘制矩形
- OpenCV之响应鼠标(四):在图像上绘制出矩形并标出起点的坐标
- OpenCV利用鼠标进行矩形ROI选取
- 利用鼠标绘制矩形和截取图像的矩形区域并保存(OpenCV2.4.5)
- OpenCV鼠标画图例程,鼠标绘制矩形
- opencv-鼠标在窗口中画矩形
- 鼠标画矩形openCV
- OpenCV鼠标画图例程,鼠标绘制矩形
- 基础学习笔记之opencv(5):实现鼠标选定矩形框
- 关于opencv2.4.10鼠标操作画矩形
- OPENCV2 中视频处理——用鼠标选定矩形框并实时处理显示
- 基于opencv用鼠标在窗口中画矩形和线段的程序
- 在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
- [good]opencv2 使用鼠标绘制矩形并截取和保存矩形区域图像
- 【OpenCV】通过鼠标在图像中绘制RotatedRect旋转矩形
- opencv鼠标画矩形截取保存图片一部分并归一化为原图大小(Patches selected for feature extraction)
- OpenCV学习笔记(18):在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
- opencv2 使用鼠标绘制矩形并截取和保存矩形区域图像