opencv(6)---鼠标与滑动条操作
来源:互联网 发布:视频剪辑软件排名 编辑:程序博客网 时间:2024/06/04 23:00
鼠标操作
一 函数定义
指定鼠标操作消息回调函数,setMouseCallback(),原型如下
CV_EXPORTS void setMouseCallback(const String& winname, MouseCallback onMouse, void* userdata = 0);
winname—–窗口名
onMouse—–鼠标事件时被调用的函数指针,原型形式:
void Fun(int event, int x, int y, int flags, void* param);
其中,event事件为以下事件
flags为以下事件
userdata —–用户定义传到回调函数的参数,默认值0
二 代码
1.功能:在按键按下的时候,以按键按下的点为圆心,绘制圆
代码1
#include "mainwindow.h"#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namespace cv;void OnMouse(int event,int x,int y,int flags,void *param){ Mat img=*(Mat*)param; if(event==CV_EVENT_LBUTTONDOWN) { cout<<"Mouse down"<<endl; circle(img,Point(x,y),80,Scalar(255,255,255),2,8); }}MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){ Mat img(500,500,CV_8UC3,Scalar(255,255,0)); namedWindow("Mouse",CV_WINDOW_AUTOSIZE); setMouseCallback("Mouse",OnMouse,&img); while(1){ imshow("Mouse",img); if(27==waitKey(10))//按下ESC跳出循环 break; }}MainWindow::~MainWindow(){}
运行结果
2. 功能:鼠标按下时记录点的坐标,鼠标左键抬起绘制矩形
代码:
#include "mainwindow.h"#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namespace cv;Point pt;void OnMouse(int event,int x,int y,int flags,void *param){ Mat img=*(Mat*)param; switch(event){ case CV_EVENT_LBUTTONDOWN: pt.x=x; pt.y=y; break; case CV_EVENT_LBUTTONUP: rectangle(img,pt,Point(x,y),Scalar(255,255,255),2,8); break; default: break; }}MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){ Mat img(500,500,CV_8UC3,Scalar(255,255,0)); namedWindow("Mouse",CV_WINDOW_AUTOSIZE); setMouseCallback("Mouse",OnMouse,&img); while(1){ imshow("Mouse",img); if(27==waitKey(10))//按下ESC跳出循环 break; }}MainWindow::~MainWindow(){}
运行结果
二 滑动条操作
创建滑动条并指定回调函数 createTrackbar()
1. 函数原型
CV_EXPORTS int createTrackbar(const String& trackbarname, const String& winname, int* value, int count, TrackbarCallback onChange = 0, void* userdata = 0);
trackbarname—–滚动条名称
winname—–滚动条所依附的窗口名称(namedWindow创建)
value—-指向型指针,表示滑动块位置
count—滑动块最大位置,默认最小为0
onChange—-指向回调函数的指针,原型必须为void xxx(int, void*);
userdata —–用户传给回调函数的数据,默认值0
2. 代码
#include "mainwindow.h"#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namespace cv;Mat srcImage;Mat dstImage;int value=20;void OnChange(int ,void *){ //threshold(srcImage,dstImage,value,255,THRESH_BINARY); Canny(srcImage,dstImage,value,255); imshow("TrackBar",dstImage);}MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){ srcImage=imread("D:\\1\\1.png"); namedWindow("TrackBar",CV_WINDOW_AUTOSIZE); createTrackbar("Threshold","TrackBar",&value,255,OnChange,0); waitKey(0);}MainWindow::~MainWindow(){}
3. 运行结果
4. 知识点拓展
1. 设置滚动条当前位置
CV_EXPORTS_W void setTrackbarPos(const String& trackbarname, const String& winname, int pos);
例子:
setTrackbarPos("FRAME","Video",framePos);
2. 获取滚动条当前位置
函数原型
CV_EXPORTS_W int getTrackbarPos(const String& trackbarname, const String& winname);
3.获取视频帧当前位置
framePos=cap.get(CV_CAP_PROP_POS_FRAMES);
4. 设置视频帧当前位置
cap.set(CV_CAP_PROP_POS_FRAMES,value);
0 0
- opencv(6)---鼠标与滑动条操作
- opencv--鼠标与滑动条
- 【OpenCV学习笔记】八、鼠标与滑动条操作
- OpenCV 鼠标、滑动条交互式操作
- 第三天:鼠标与滑动条相关操作
- <opencv>滑动条的创建与使用
- opencv滑动条的创建与使用
- openCV:滑动条之setTrackbarPos与createTrackbar
- opencv 滑动条 cvCreateTrackbar()
- Opencv 创建滑动条
- OpenCV之滑动条
- opencv:slider(滑动条)
- opencv:创建滑动条
- Opencv关于滑动条bar操作的实例
- opencv鼠标操作setMouseCallback()与on_MouseHandle()
- WebDriver 鼠标滑动操作
- C/C++ OpenCV滑动条的创建与使用
- opencv中滑动条的创建与使用
- 人民的名义1-55集全 已看完(观后感)
- Add extra standby database to complete database migration to new servers with minimal outage
- 动态规划
- Hadoop
- c++ stl sort函数奔溃问题
- opencv(6)---鼠标与滑动条操作
- PAT 1069. 微博转发抽奖
- POJ-3463: Sightseeing 【最短路次短路及条数】
- 【cc2541历程】创建一个CC2541协议栈的工程文件
- 使用System.getProperty方法,如何配置JVM系统属性
- java核心技术学习笔记-第五章-继承
- 64位mysql使用教程
- 欢迎使用CSDN-markdown编辑器
- 28个linux命令行神器