学习OpenCV——鼠标事件(画框)
2015-03-05 22:03
507 查看
Refer from http://blog.csdn.net/yangtrees/article/details/7573919
[cpp]
view plaincopyprint?
#include "cv.h"
#include "highgui.h"
bool check_line_state=false;
IplImage* workImg;
IplImage* imgshow;
CvRect ROI_rect;
void on_mouse4(int event, int x,int y,int flags,void* param)
{
int thickness=2;
CvPoint p1,p2;
if(event==CV_EVENT_LBUTTONDOWN)
{
//当前鼠标位置(x,y)
ROI_rect.x=x;
ROI_rect.y=y;
check_line_state=true;
}
else if(check_line_state&&event==CV_EVENT_MOUSEMOVE)//鼠标状态
{
cvCopy(workImg,imgshow);//这一步很重要,不断更新显示图像,不然画出的图像如图2所示
p1=cvPoint(ROI_rect.x,ROI_rect.y);
p2=cvPoint(x,y);
cvRectangle(imgshow,p1,p2,CV_RGB(0,255,150),thickness,CV_AA,0);
cvShowImage("image",imgshow);
}
else if(check_line_state&&event==CV_EVENT_LBUTTONUP)
{
check_line_state=false;
cvWaitKey(20);
}
}
int main()
{
workImg=cvLoadImage("D:/Demo.jpg",1);
imgshow=cvCreateImage(cvSize(workImg->width,workImg->height),workImg->depth,workImg->nChannels);
cvCopy(workImg,imgshow);
//cvFlip(imgshow);
ROI_rect.x=ROI_rect.y=0;
cvNamedWindow("image",CV_WINDOW_AUTOSIZE);
cvShowImage("image",imgshow);
cvSetMouseCallback("image",on_mouse4);
cvWaitKey();
cvDestroyWindow("image");
}
图1: 图2:
[cpp]
view plaincopyprint?
#include "cv.h"
#include "highgui.h"
bool check_line_state=false;
IplImage* workImg;
IplImage* imgshow;
CvRect ROI_rect;
void on_mouse4(int event, int x,int y,int flags,void* param)
{
int thickness=2;
CvPoint p1,p2;
if(event==CV_EVENT_LBUTTONDOWN)
{
//当前鼠标位置(x,y)
ROI_rect.x=x;
ROI_rect.y=y;
check_line_state=true;
}
else if(check_line_state&&event==CV_EVENT_MOUSEMOVE)//鼠标状态
{
cvCopy(workImg,imgshow);//这一步很重要,不断更新显示图像,不然画出的图像如图2所示
p1=cvPoint(ROI_rect.x,ROI_rect.y);
p2=cvPoint(x,y);
cvRectangle(imgshow,p1,p2,CV_RGB(0,255,150),thickness,CV_AA,0);
cvShowImage("image",imgshow);
}
else if(check_line_state&&event==CV_EVENT_LBUTTONUP)
{
check_line_state=false;
cvWaitKey(20);
}
}
int main()
{
workImg=cvLoadImage("D:/Demo.jpg",1);
imgshow=cvCreateImage(cvSize(workImg->width,workImg->height),workImg->depth,workImg->nChannels);
cvCopy(workImg,imgshow);
//cvFlip(imgshow);
ROI_rect.x=ROI_rect.y=0;
cvNamedWindow("image",CV_WINDOW_AUTOSIZE);
cvShowImage("image",imgshow);
cvSetMouseCallback("image",on_mouse4);
cvWaitKey();
cvDestroyWindow("image");
}
图1: 图2:
相关文章推荐
- 学习OpenCV——鼠标事件(画框)
- 学习OpenCV——鼠标事件&亮暗化精度最高(与距离反比)&批处理
- python-opencv-鼠标事件-画框圈定目标
- OpenCV学习笔记(4)之鼠标事件
- openCV鼠标事件学习
- OpenCV学习(一):图片的读取显示以及鼠标点击事件的设置
- opencv学习心得(一)鼠标响应事件绘制轮廓
- Python OpenCV学习笔记之:处理鼠标事件
- 学习OpenCV——鼠标事件 输出鼠标坐标&区域亮化
- opencv学习心得(一)鼠标响应事件绘制轮廓
- OPENCV学习笔记1-5_鼠标事件
- 学习OpenCV(第四章 鼠标事件)
- opencv鼠标响应事件学习整理
- opencv鼠标响应事件学习整理
- 学习C#操纵Visio之二:响应鼠标事件
- Silverlight学习笔记(七)-----Silverlight事件处理之鼠标事件实现简单拖拽
- 基础学习笔记之opencv(5):实现鼠标选定矩形框
- 学习OpenCV——鼠标画画(分水岭算法)
- qt练习11 鼠标,按键,滚轮事件学习
- 基础学习笔记之opencv(5):实现鼠标选定矩形框