鼠标画矩形openCV
2024-10-20 03:17:13
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
/*鼠标画矩形*/
void my_mouse_callback(
int event,int x,int y,int flag,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(-,-,,);
IplImage* image = cvCreateImage(
cvSize(,),
IPL_DEPTH_8U, );
cvZero(image);
IplImage* temp = cvCloneImage(image); cvNamedWindow("Box Example"); cvSetMouseCallback(
"Box Example",
my_mouse_callback,
(void*)image
); while()
{
cvCopyImage(image,temp);
if(drawing_box) draw_box(temp,box);
cvShowImage("Box Example",temp); if(cvWaitKey()==) break;
} cvReleaseImage(&image);
cvReleaseImage(&temp);
cvDestroyAllWindows(); } void my_mouse_callback(
int event,int x,int y,int flag,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,,);
}
break;
case CV_EVENT_LBUTTONUP:
{
drawing_box = false;
if(box.width<)
{
box.x += box.width;
box.width*=-;
}
if(box.height<)
{
box.y+=box.height;
box.height*=-;
}
draw_box(image,box);
}
break;
}
}
最新文章
- 用ffmpeg快速剪切和合并视频
- iOS开发~CocoaPods使用详细说明
- Sequelize 关系模型简介
- 记一次TFS 的 垃圾提示(无法下载 未获取项目 的 代码)
- Android Weak Handler:可以避免内存泄漏的Handler库
- HMM隐马尔科夫模型
- Hello, Github Blog
- 【HDOJ】2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- 配置并学习微信JS-SDK(2)—图片接口
- Nginx 基本配置和日志分析
- linux function
- C#中结构与类的区别
- 实例:怎样使用 Netty 下载文件
- Android版本更新时对SQLite数据库升级或者降级遇到的问题
- Service Worker
- Mongodb的集合插入一个字段
- C++中#include<;iostream>;
- oracle 字符转换成数字
- android4.3 截屏功能的尝试与失败分析
- CCAction、CCFiniteTimeAction、CCSpeed、CCFollow