文章标题
来源:互联网 发布:恭亲王奕欣 知乎 编辑:程序博客网 时间:2024/06/06 09:32
鼠标操作
opencv中使用鼠标进行交互。
鼠标操作与滑动条的消息映射方式很类似,都是通过一个中介函数配合一个回调函数来实现的。
#include <opencv2/opencv.hpp>using namespace cv;#define WINDOW_NAME "程序窗口"void on_MouseHandle(int event, int x, int y, int flags, void *param);void DrawRectangle(cv::Mat& img, cv::Rect box);void ShowHelpText();Rect g_rectangle;bool g_bDrawingBox = false;RNG g_rng(12345);int main(){ g_rectangle = Rect(-1, -1, 0, 0); Mat srcImage(600, 800, CV_8UC3), tempImage; srcImage.copyTo(tempImage); g_rectangle = Rect(-1, -1, 0, 0); srcImage = Scalar::all(0); namedWindow(WINDOW_NAME); setMouseCallback(WINDOW_NAME, on_MouseHandle, (void*)&srcImage); while (1) { srcImage.copyTo(tempImage); if (g_bDrawingBox) DrawRectangle(tempImage, g_rectangle); imshow(WINDOW_NAME, tempImage); if (waitKey(10) == 27) break; } return 0;}void on_MouseHandle(int event, int x, int y, int flags, void * param)//鼠标回调函数{ Mat & image = *(cv::Mat*) param; switch (event) { case EVENT_MOUSEMOVE: { //鼠标移动消息 if (g_bDrawingBox)//是否进行绘制 { g_rectangle.width = x - g_rectangle.x; g_rectangle.height = y - g_rectangle.y; } } break; //左键按下消息 case EVENT_LBUTTONDOWN: { g_bDrawingBox = true; g_rectangle = Rect(x, y, 0, 0); } break; //左键抬起消息 case EVENT_LBUTTONUP: { g_bDrawingBox = false; if (g_rectangle.width < 0) { g_rectangle.x += g_rectangle.width; g_rectangle.width *= -1; } if (g_rectangle.height < 0) { g_rectangle.y += g_rectangle.height; g_rectangle.height *= -1; } DrawRectangle(image, g_rectangle); break; } }}void DrawRectangle(cv::Mat& img, cv::Rect box)//自定义矩形绘制函数{ rectangle(img, box.tl(), box.br(), Scalar(g_rng.uniform(0, 255), g_rng.uniform(0, 255), g_rng.uniform(0, 255)));//随机颜色}
阅读全文
0 0
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- erlang获取离线玩家数据
- javaMail
- 数据库版本化的最佳实践!
- ios 设置状态栏文字颜色为白色
- go语言学习笔记(8) 流程控制
- 文章标题
- mysql sending data的状态导致数据库很慢及无法DDL 操作
- 从顺序表中删除所有值为x的元素(Java实现),要求时间复杂度O(n),空间复杂度O(1)
- 50条sql查询技巧
- 2017-9-25 H5增加的标签
- go语言学习笔记(9) 函数
- Pixhawk软件仿真飞行测试
- Python草稿簿-Pandas的DataFrame结构
- 使用opencv标定单目相机(张正友法)代码实现