使用OpenCV绘制矩形:GUI交互实例
2星 需积分: 12 153 浏览量
更新于2024-12-02
收藏 2KB TXT 举报
"OpenCV图形界面应用教程"
本示例主要介绍了如何使用OpenCV进行图形绘制,特别是如何创建一个窗口并在其中绘制矩形。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它包含了众多图像处理和计算机视觉的算法,广泛应用于图像分析、机器学习等领域。
首先,代码中包含了必要的头文件`#include <cv.h>`、`#include <highgui.h>`,这两个头文件是OpenCV早期版本中用于图像处理和GUI交互的核心库。在编译时,通过`#pragma comment(lib, "xxx.lib")`指令链接了对应的库文件。
接下来定义了一个CvRect类型的变量`CvRect box;`,用于存储用户绘制的矩形坐标。`bool Drawing = false;`表示当前是否正在绘制矩形的状态。
`my_mouse_callback`函数是一个鼠标事件回调函数,当在窗口上进行鼠标操作时,该函数会被调用。参数`event`表示鼠标事件类型(如单击、双击、移动等),`x`和`y`是鼠标位置坐标,`flags`包含了一些额外的信息,`param`则是一个指向传递给`cvSetMouseCallback`的额外数据的指针,在这里是一个指向IplImage*类型的指针,即图像指针。
`DrawRect`函数用于在给定的图像和矩形坐标上绘制矩形。它使用`cvRectangle`函数,该函数接受图像、矩形的两个对角点坐标、颜色和线宽作为参数,然后在图像上画出矩形。
`main`函数是程序的入口点,首先初始化了矩形`box`为无效状态(-1,-1),然后创建了一个8位3通道的IplImage对象`img`,大小为640x480像素,并用黑色填充。接着克隆了`img`得到`temp`,用于显示绘制过程。`cvNamedWindow`创建了一个名为"Draw_Rectangle"的窗口,并使用`cvSetMouseCallback`设置鼠标事件回调函数,将图像`img`的指针传入,以便在窗口上绘制矩形。
进入无限循环,每次迭代都复制`img`到`temp`,如果`Drawing`为真,则调用`DrawRect`在`temp`上画出矩形,然后使用`cvShowImage`显示`temp`。如果用户按下ESC键,循环结束,释放图像资源并销毁窗口。
这个实例展示了OpenCV如何结合GUI实现用户交互,让用户能够实时地在图像上绘制矩形,是学习OpenCV图形界面编程的一个基础示例。通过这个例子,开发者可以进一步了解OpenCV中的鼠标事件处理以及图像绘制功能,为后续的图像处理和分析项目打下基础。
154 浏览量
337 浏览量
2011-04-22 上传
136 浏览量
181 浏览量
1244 浏览量
575 浏览量
2011-10-29 上传
1796 浏览量
最帅的小猪
- 粉丝: 26
- 资源: 18
最新资源
- Lista_de_Exercicios:Lista deExercíciode Algoritmos do Gustavo Guanabara教授
- rust-cas:通过构建与Bazel兼容的内容可寻址商店来测试Rust
- 网络刀客 v3.0
- TW-Shiraz:Shiraz是Tiddlywiki 5的一个小型插件,包含宏,样式表,模板,片段,图像,静态表,动态表,并充当入门工具包
- vc_static_button.rar_RFW_VC static Button_VC++ static Button
- 行业文档-设计装置-一种折叠式太阳能座椅广告棚.zip
- pid控制器代码matlab-Ziegler-Nichols-Tuning-Method:使用Ziegler-Nichols闭环方法针对给定传
- CompletableFuture.zip
- 纯css制作文字随时间变动而变色,文字变色效果,背景透明阴影
- up4
- Curriculum_Vitae:职务経歴书
- 粒子群多目标-程序.rar_UY9_pareto_pareto多目标_多目标 粒子群_自适应粒子群
- 行业文档-设计装置-一种折纸机的机头.zip
- englishTeachers:使用Postgresql的简单应用
- SSM实验室预约管理系统.7z
- ESP8266-01GPIO口模拟I2C LCD1602.rar