一、鼠标事件

 #include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std; Mat img(,,CV_8UC3,Scalar(,,));//定义成全局变量 void OnMouse(int event,int x,int y,int flags,void* param){
if(event==CV_EVENT_LBUTTONDOWN){//如果鼠标左键按下
cout<<"mouse down"<<endl;//控制台输出
circle(img,Point(x,y),,Scalar(,,),,);//在全局变量img上画圆
}
} void main(){
namedWindow("mouse",CV_WINDOW_AUTOSIZE);
setMouseCallback("mouse",OnMouse,);
while(){
imshow("mouse",img);
if(==waitKey())//每隔10毫秒检测是否按下esc键
break;
}
}

另外一种方法,不必将img图像设置为全局变量,只需传入其地址即可。

 #include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std; Point pt;
void OnMouse(int event,int x,int y,int flags,void* param){
Mat img=*(Mat*)param;//将param强制转换为Mat指针,*(Mat*)=Mat,就如*(int*)=int一样
switch(event){
case CV_EVENT_LBUTTONDOWN://鼠标左键按下时
pt.x=x;
pt.y=y;
break;
case CV_EVENT_LBUTTONUP://鼠标左键抬起时
rectangle(img,pt,Point(x,y),Scalar(,,),,);
break;
default:
break;
}
} void main(){
Mat img(,,CV_8UC3,Scalar(,,));
namedWindow("mouse",CV_WINDOW_AUTOSIZE);
setMouseCallback("mouse",OnMouse,&img);//传入img的地址,这样就不必将img设置成全局变量了 while(){
imshow("mouse",img);
if(==waitKey())//每隔10毫秒检测是否按下esc键
break;
}
}

二、滑动条操作

 #include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std; Mat dst;
int value=; void onChange(int,void* param){
Mat src=*(Mat*)param;
threshold(src,dst,value,,THRESH_BINARY);//二值化
//Canny(src,dst,value,255);//canny边缘检测
imshow("TrackBar",dst);
} void main(){
Mat src=imread("1.jpg",);//读入灰度图
namedWindow("TrackBar",CV_WINDOW_AUTOSIZE);
createTrackbar("Threshold","TrackBar",&value,,onChange,&src); threshold(src,dst,value,,THRESH_BINARY);
//Canny(src,dst,value,255);
imshow("TrackBar",dst);//  21/22/23这三行代码如果去掉的话,在未调整滑动条的情况下,不会有画面显示 waitKey();
}

opencv学习之路(5)、鼠标和滑动条操作的更多相关文章

  1. 【opencv学习笔记八】创建TrackBar轨迹条

    createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...

  2. opencv学习之路(6)、鼠标截图,滑动条播放视频

    一.鼠标截图 #include<opencv2/opencv.hpp> #include<iostream> using namespace cv; using namespa ...

  3. opencv学习之路(29)、轮廓查找与绘制(八)——轮廓特征属性及应用

    一.简介 HSV颜色空间(hue色调,saturation饱和度,value亮度) 二.HSV滑动条 #include "opencv2/opencv.hpp" #include ...

  4. opencv学习之路(32)、角点检测

    一.角点检测的相关概念 二.Harris角点检测——cornerHarris() 参考网址: http://www.cnblogs.com/ronny/p/4009425.html #include ...

  5. opencv学习之路(12)、图像滤波

    一.图像滤波简介 二.方框滤波——boxFilter() #include<opencv2/opencv.hpp> using namespace cv; void main(){ Mat ...

  6. 利用OpenCV和MFC对话框建设一个有滑动条控制的播放器--转

    (一)问题的提出: OpenCV有一个很简单的播放视频文件并加载滑动条的程序,但是如何用MFC对话框来创建一个有滑动条控制的播放器呢,网络上四处搜索都没有代码可以参考,下的都是些骗子链接文件,很过分, ...

  7. FastAPI 学习之路(五十五)操作Redis

    之前我们分享了操作关系型数据库,具体文章, FastAPI 学习之路(三十二)创建数据库 FastAPI 学习之路(三十三)操作数据库 FastAPI 学习之路(三十四)数据库多表操作 这次我们分享的 ...

  8. Opencv 学习笔记之——鼠标,进度条操作

    Opencv中提供一个鼠标调用的函数,SetMouseCallback()函数,它配合一个回调函数来实现鼠标操作的功能.   首先看一下SetMouseCallback的函数原型: c++: void ...

  9. opencv学习之路(31)、GrabCut & FloodFill图像分割

    一.GrabCut 1.利用Rect做分割 #include "opencv2/opencv.hpp" using namespace cv; void main() { Mat ...

随机推荐

  1. System.ArgumentException: 目标数组的长度不够。请检查 destIndex 和长度以及数组的下限

    扫码支付接口将要上线,近几天在优化系统性能.昨天把日志Helper类的日志记录改成了使用Queue<T>对象来实现异步处理.做了单元测试,并模拟多线程来测试后,发现正常.今天将站点部署到准 ...

  2. LeetCode121.买卖股票的最佳时机

    给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出股票. 示例 ...

  3. HAProxy实现mysql负载均衡

    安装 yum install haproxy 修改配置 vi /etc/haproxy/haproxy.cfg   配置如下 global daemon nbproc 1 pidfile /var/r ...

  4. Python记录5:函数1

    函数 ''' 1. 什么是函数     在程序中具备某一功能的工具->函数     函数的使用必须遵循原则:         先定义         后调用 函数分为两大类:         1 ...

  5. ubuntu之redis集群配置

    redis3版本以上支持集群 需要ruby的支持 root@iZ2zejfbthvbzs5lxf37vjZ:/usr/local/src/redis-3.2.9/src# apt-get instal ...

  6. 使用JFileChooser实现在指定文件夹下批量添加根据“数字型样式”或“非数字型样式”命令的文件夹

    2018-11-05 20:57:00开始写 Folder.java类 import javax.swing.JFrame; import javax.swing.JPanel; import jav ...

  7. [openjudge-搜索]Lake Counting(翻译及实现)

    题目原文 描述 Due to recent rains, water has pooled in various places in Farmer John's field, which is rep ...

  8. 【impala学习之一】impala

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 CM5.4 一.ImpalaImpala是基于Hive的大数 ...

  9. 机器学习评价方法 - Recall & Precision

    刚开始看这方面论文的时候对于各种评价方法特别困惑,还总是记混,不完全统计下,备忘. 关于召回率和精确率,假设二分类问题,正样本为x,负样本为o: 准确率存在的问题是当正负样本数量不均衡的时候: 精心设 ...

  10. linux环境下安装qt过程

    linux(虚拟机fedora9)环境下安装qt的过程主要是按照下面几网页上的教程完成的. http://mobile.51cto.com/symbian-272869.htm http://www. ...