Opencv鼠标操作
来源:互联网 发布:垃圾桶 知乎 编辑:程序博客网 时间:2024/06/05 06:46
#include<iostream>#include<opencv2/opencv.hpp>#define WINDOW_NAME "鼠标事件窗口"using namespace std;using namespace cv;Rect g_rectangle;bool g_bDrawingBox = false;RNG g_rng(12345);void DrawRectangle(Mat &img, Rect box){rectangle(img, box.tl(), box.br(), Scalar(g_rng.uniform(0, 255), g_rng.uniform(0, 255), g_rng.uniform(0, 255)));}/*注意:不能在毁掉函数中写入未初始化的矩阵类,所以需要用时,需要写一个标志位,然后再在while(1)循环内使用*/void onMouse(int event, int x, int y, int flag, void *param){Mat &img = *(cv::Mat*)param;switch (event){ //移动鼠标的时候case CV_EVENT_MOUSEMOVE:{ if (g_bDrawingBox) { g_rectangle.width = x - g_rectangle.x; g_rectangle.height = y - g_rectangle.y; }}break;//点击鼠标左键时case CV_EVENT_LBUTTONDOWN:{ g_bDrawingBox = true; g_rectangle = Rect(x, y, 0, 0);}break;//松开鼠标左键时case CV_EVENT_LBUTTONUP:{ g_bDrawingBox = false; DrawRectangle(img, g_rectangle);}break;}}int main(){Mat srcImage(600, 800, CV_8UC3);Mat tempImage;srcImage.copyTo(tempImage);srcImage = Scalar::all(0);namedWindow(WINDOW_NAME);setMouseCallback(WINDOW_NAME, onMouse, (void *)&srcImage);while (1){srcImage.copyTo(tempImage);if (g_bDrawingBox)DrawRectangle(tempImage, g_rectangle);imshow(WINDOW_NAME, tempImage);if(waitKey(10) == 27)break;/*DrawRectangle(srcImage, g_rectangle);imshow(WINDOW_NAME, srcImage);if (waitKey(10) == 27)break;*/}return 0;}
0 0
- opencv 鼠标操作
- Opencv鼠标操作
- OpenCV之鼠标操作
- OpenCV 鼠标操作
- opencv 鼠标操作 setMouseCallback
- opencv鼠标操作
- OPENCV中操作鼠标
- opencv鼠标操作
- opencv:鼠标操作
- opencv-鼠标操作
- opencv 3.0 鼠标操作 setMouseCallback
- 基于opencv的鼠标操作
- openCV学习笔记-鼠标操作
- opencv 鼠标操作 裁剪图片
- OpenCV常用图像操作和鼠标操作
- opencv的鼠标,滑块操作
- opencv鼠标操作及GUI矩形绘画
- OpenCV 鼠标、滑动条交互式操作
- Dsicuz x2.5去掉域名后面的/forum.php
- 源码编译GIT & 添加SSH
- 剑指offer面试题15-链表中倒数第k个节点
- ubuntu 14.04 安装配置php7
- HDU 2501 Tiling_easy version
- Opencv鼠标操作
- selenium2.0的初步封装(java版本)
- php 分页操作(一)
- js 删除对象中的键值对
- win8 64bit下srilm+cygwin实现ngram语言模型
- 设计模式六大原则
- 控制上实现的连连看
- 用泛型实现rust返回类型自动推导
- Linux文本编辑器Vim