学习OpenCV——鼠标事件(画框)
2016-04-17 19:33
417 查看
[cpp] view plain copy
print?
#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:
from: http://blog.csdn.net/yangtrees/article/details/7573919
print?
#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:
from: http://blog.csdn.net/yangtrees/article/details/7573919
相关文章推荐
- linux目录结构
- Linux性能测试命令系列(2)- pstree
- 学习OpenCV——OpenMP
- 学习OpenCV——粒子滤波(网上两篇文章总结)
- 学习OpenCV——配置CUDA环境
- 运维人员写项目方案及推进项目的基本流程思路
- 运维人员写项目方案及推进项目的基本流程思路
- Linux LVM硬盘管理及LVM扩容
- 10种Linux下磁盘快照方式恢复系统
- 学习OpenCV——BOW特征提取函数(特征点篇)
- Tomcat运行Java Web内存溢出总结
- 整合Apache与PHP教程
- linux find 几个特殊点
- Linux系统误操作之-文件权限介绍和恢复分享
- linux系统下的c编程——my first program
- Linux系统误操作之-文件权限介绍和恢复分享
- Linux内核分析第八周——进程的切换和系统的一般执行过程
- 初识nginx配置文件--nginx.conf
- php面试题之四——Linux部分(高级部分)
- linux 安装svn(二)创建版本库