博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
鼠标操作和滑动条操作
阅读量:3959 次
发布时间:2019-05-24

本文共 1630 字,大约阅读时间需要 5 分钟。

1.鼠标操作

1.api

void cvSetMouseCallback(const char* window_name,CvMouseCallback on_mouse,void* param=NULL);//window_name很简单,就是窗口的名字。//on_mouse就是对函数进行回调,我们的所有操作都要在这个函数里面进行。//param是可以传出值的自定义变量,默认值为空,可不写。void onMouse(int Event,int x,int y,int flags,void* param );//这是回调函数//xy坐标可以理解,图像cols为x,rows为y。而Event和flags则对应着不同的鼠标操作。

在这里插入图片描述

2.代码演示

//回调函数void OnMouse(int event, int x, int y, int flags, void*param) {
Mat &image = *(Mat*)param;if (event == 1) {
cout << "输出成功" << endl; circle(image, Point(x,y), 100, Scalar(255, 0, 0),5,8); imshow("Mouse", image); }}
//主函数void main{
namedWindow("Mouse", WINDOW_FREERATIO); Mat img(500, 500, CV_8UC3, Scalar(255, 255, 255)); imshow("Mouse", img); setMouseCallback("Mouse", OnMouse, &img); waitKey(0);}

在这里插入图片描述

2.滑动条操作

1.api

//原型int createTrackbar(	const String &trackbarname, 	const String &winname, 	int* value, 	int count, 	TrackbarCallback onChange=0, 	void* userdata=0);//第一个参数是调节的参数名,即滑动条的名字; //第二个参数是窗口名;不要乱写,否则不出现滑动条;(NamedWindow创建) //第三个参数是当前滑动条的值 //第四个参数是调节参数最大值,可以直接数字表示; //第五个参数是回调函数名,即调节的参数被那个函数(自己创建的函数名)使用,就调哪个函数。

2.代码演示

//回调函数void onChange(int pos, void* param){
// 强制类型转换 Mat src = *(Mat*)(param); Mat dst; // 二值化 threshold(src, dst, pos, 255, 0); //这里的imshow是对应滚动条的显示 imshow("二值化", dst);}
//主函数int main(){
//trackbar的值 int posTrackBar = 0; //trackbar的最大值 int maxValue = 255; //读入图像,以灰度图形式读入 Mat img = imread("E:\\OpenCV\\images\\fqy1.jpg", 0); //新建窗口 namedWindow("二值化"); //这里的imshow是为了避免我们没有拉动滚动条没有图像的显示 imshow("二值化", img); //创建trackbar,我们把img作为数据传进回调函数中,这里的posTrackBar会根据滚动条的拉动改变相应的值 createTrackbar("pos", "二值化", &posTrackBar, maxValue, onChange, &img); waitKey(0); return 0;}

转载地址:http://mkmzi.baihongyu.com/

你可能感兴趣的文章
智能设计 | MixAI 知识库 No.69
查看>>
通过研究微信文章的相关推荐逻辑 ,尝试生成指南| Mixlab设计黑客
查看>>
浏览器低成本实现免手提的用户体验,使用人脸、手势、姿态追踪 | Mix群聊
查看>>
这个世界上肯定有另一个我,做着我不敢做的事,过着我想过的生活 | MixAI 知识库 No.70...
查看>>
表情包数据挖掘 | Mix群聊
查看>>
如何阅读科研论文
查看>>
理解本真的REST架构风格
查看>>
10款免费且开源的项目管理工具
查看>>
java调用javascript :js引擎rhino
查看>>
asp 中常用的文件处理函数
查看>>
ADO中sqlserver存储过程使用
查看>>
Linux KernelTech版FAQ 1.0
查看>>
ntfs分区iis故障的解决
查看>>
个人创业“六大死穴”
查看>>
最重要的 12个 J2EE 最佳实践
查看>>
通过Java Swing看透MVC设计模式
查看>>
Java 理论与实践: 关于异常的争论
查看>>
编写高效的线程安全类
查看>>
提高Java代码可重用性的三个措施
查看>>
编写跨平台Java程序注意事项
查看>>