一、鼠标事件

 #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.Web.HttpException (0x80004005): 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。

    异常描述: Global.asax捕获到异常:System.Web.HttpException (0x80004005): 验证视图状态 MAC 失败.如果此应用程序由网络场或群集承载,请确保 < ...

  2. linux临时网络配置

    1.设置IP地址: ifconfig ens33 192.168.60.231/24 2.添加默认网关路由 $Route add default gw <默认网关地址> 例:#route ...

  3. VS2010 运行时 出现cmd窗口的设置方法

     项目 - 属性 -生成事件 --后期生成事件 ->命令行 (editbin /SUBSYSTEM:CONSOLE $(OUTDIR)\$(ProjectName).exe)        注: ...

  4. Nginx常用功能

    3.Nginx常用功能 3.1 反向代理服务器 3.1.1.demo2 a.我在tomcat下部署了一个javaweb项目,tomcat安装的服务器IP为:192.168.37.136,部署的项目在t ...

  5. fang99-三号线与四号线新盘

    三号线与四号线新盘 http://www.fang99.com/buycenter/buildingsearch_map.aspx?projectid=0000011104 http://www.fa ...

  6. 删除(unfork)github中某个库(repository)

    1.头像->your profile 2.点击某个想要删除的库,出现界面: 3.点击setting,鼠标滚动页面至末尾,出现页面: 4.点击delete this repository: OK!

  7. Swift 了解(3)

    类(Classes) 假设你是一个建筑师,你刚刚签了一个合同,要在一个新的小区修建20个相似的房子.在你派出建筑工队之前,你必须要画一个房子的设计图.这份设计图将会展现房子的外表和功能.把这份设计图当 ...

  8. MySQL 查询表中某字段值重复的数据

    MySQL中,查询表(dat_bill_2018_11)中字段(product_id)值重复的记录: ; 说明:先用GROUP BY 对 product_id 进行分组,同时使用COUNT(*)进行统 ...

  9. Spring boot jackson

    Spring boot 所引用的包里面包含 jackson-databind-2.8.3.jar jackson-annotations-2.8.3.jar jackson-core-2.8.3.ja ...

  10. 孤立森林(Isolation Forest)

    前言随着机器学习近年来的流行,尤其是深度学习的火热.机器学习算法在很多领域的应用越来越普遍.最近,我在一家广告公司做广告点击反作弊算法研究工作.想到了异常检测算法,并且上网调研发现有一个算法非常火爆, ...