opencv学习之路(5)、鼠标和滑动条操作
一、鼠标事件

#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)、鼠标和滑动条操作的更多相关文章
- 【opencv学习笔记八】创建TrackBar轨迹条
createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...
- opencv学习之路(6)、鼠标截图,滑动条播放视频
一.鼠标截图 #include<opencv2/opencv.hpp> #include<iostream> using namespace cv; using namespa ...
- opencv学习之路(29)、轮廓查找与绘制(八)——轮廓特征属性及应用
一.简介 HSV颜色空间(hue色调,saturation饱和度,value亮度) 二.HSV滑动条 #include "opencv2/opencv.hpp" #include ...
- opencv学习之路(32)、角点检测
一.角点检测的相关概念 二.Harris角点检测——cornerHarris() 参考网址: http://www.cnblogs.com/ronny/p/4009425.html #include ...
- opencv学习之路(12)、图像滤波
一.图像滤波简介 二.方框滤波——boxFilter() #include<opencv2/opencv.hpp> using namespace cv; void main(){ Mat ...
- 利用OpenCV和MFC对话框建设一个有滑动条控制的播放器--转
(一)问题的提出: OpenCV有一个很简单的播放视频文件并加载滑动条的程序,但是如何用MFC对话框来创建一个有滑动条控制的播放器呢,网络上四处搜索都没有代码可以参考,下的都是些骗子链接文件,很过分, ...
- FastAPI 学习之路(五十五)操作Redis
之前我们分享了操作关系型数据库,具体文章, FastAPI 学习之路(三十二)创建数据库 FastAPI 学习之路(三十三)操作数据库 FastAPI 学习之路(三十四)数据库多表操作 这次我们分享的 ...
- Opencv 学习笔记之——鼠标,进度条操作
Opencv中提供一个鼠标调用的函数,SetMouseCallback()函数,它配合一个回调函数来实现鼠标操作的功能. 首先看一下SetMouseCallback的函数原型: c++: void ...
- opencv学习之路(31)、GrabCut & FloodFill图像分割
一.GrabCut 1.利用Rect做分割 #include "opencv2/opencv.hpp" using namespace cv; void main() { Mat ...
随机推荐
- Windows(华硕/联想)笔记本上安装黑苹果与win双系统教程
声明:电脑小白者请谨慎安装,如有需要可私聊或留言提供安装工具 首先说明:Windows PC的文件操作系统也就是磁盘格式是FAT32或 NTFS ,而 Mac 的文件操作系统格式是 HFS ,所以这时 ...
- shell编程:if语句
条件判断式的两边的空格不能生
- LeetCode155.最小栈
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中. pop() -- 删除栈顶的元素. top() -- 获取栈顶元素. ...
- LeetCode83.删除排序链表中的重复的元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3-&g ...
- Nginx加载ngx_pagespeed模块,加快网站打开的速度
[页面加速]配置Nginx加载ngx_pagespeed模块,加快网站打开的速度 ngx_pagespeed 是一个 Nginx 的扩展模块,可以加速你的网站,减少页面加载时间,它会自动将一些提升 ...
- input 滑块功能range javascript方法使用
<script> var rangelist=document.querySelectorAll('[type="range"]'); for(var i=0; i&l ...
- sudo安装某一文件报错:E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
报错原因:资源被占用 解决方法: sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock
- mysql存储过程或函数中传入参数与表字段名相同引发的悲剧
真实案例.如下的一个存储过程: create procedure Apple(in user_id int) begin delete from users where user_id = user_ ...
- C-Cow Sorting (置换群, 数学)
Farmer John's N (1 ≤ N ≤ 10,000) cows are lined up to be milked in the evening. Each cow has a uniqu ...
- chromedriver 全屏 翻页 错误
from selenium import webdriver from selenium.common.exceptions import TimeoutException, StaleElement ...