有关opencv的学习(11)—有关回调函数
来源:互联网 发布:下载淘宝网2015新版 编辑:程序博客网 时间:2024/06/05 20:41
什么叫回调函数?
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
回调函数使用步骤:
(1)、回调函数签名———在main()函数之前声明
(2)、定义回调函数———在main()函数之前定义回调函数执行代码
(3)、注册回调函数———在main()函数中关联回调函数与变量。
代码如下:
#ifndef onMouse_h#define onMouse_h#include <opencv2/opencv.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/core/core.hpp>using namespace cv;using namespace std;//1.回调函数签名void onMouse(int event,int x,int y,int flags,void*param);//2.定义回调函数void onMouse(int event,int x,int y,int flags,void*param){ cv::Mat *im=reinterpret_cast<Mat*>(param); switch (event) { case CV_EVENT_LBUTTONDOWN: std::cout<<"at("<<x<<","<<y<<")value is:" <<static_cast<int>(im->at<uchar>(cv::Point(x,y)))<<std::endl; break; case CV_EVENT_RBUTTONDOWN: std::cout<<"input(x,y)"<<endl; std::cout<<"x="<<endl; cin>>x; std::cout<<"y="<<endl; cin>>y; std::cout<<"at("<<x<<","<<y<<")value is:" <<static_cast<int>(im->at<uchar>(cv::Point(x,y)))<<std::endl; break; } }#endif /* onMouse_h */
主函数:
#include <iostream>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/opencv.hpp>#include "onMouse.h"using namespace cv;using namespace std;int main(){ Mat image=imread("/Users/zhangxiaoyu/Desktop/1.png",0);//538*716 if(image.empty()) { cout<<"Error!cannot be read...../n"; return -1; } cv::setMouseCallback("original image", onMouse,reinterpret_cast<void*>(&image)); cv::namedWindow("original image"); while(1) { cv::imshow("original image", image); waitKey(40); } return 0;}
0 0
- 有关opencv的学习(11)—有关回调函数
- 有关于回调函数(callback)
- 有关js回调函数
- 回调函数的好处——有关查找值的例子分析
- 有关opencv的学习(4)—图像的锐化
- 有关opencv的学习(1)—图片显示
- 有关opencv的学习(8)—肤色检测
- 有关opencv的学习(9)—计算图像直方图
- 有关opencv的学习(12)—积分图
- 有关opencv的学习(20)—图像滤波(1)
- 有关opencv的学习(21)—图像滤波(2)
- 有关ajax 不走回调函数的问题解析
- opencv学习笔记(二十六)直方图有关的操作
- opencv入门学习(有关视频)
- 有关opencv的学习(3)—图像的减色算法
- 有关opencv的学习(5)—图像的重映射
- 有关opencv的学习(6)—图像的HSV色彩空间
- 有关opencv的学习(7)—图片的特效显示
- 3.17
- AB测试结果分析
- lenovo Win10 安装 Androd Studio 新版本编程开发的软件
- Hibernate入门(二)配置元素学习
- JAVA入门
- 有关opencv的学习(11)—有关回调函数
- bzoj1072: [SCOI2007]排列perm
- 实验吧简单的sql注入解题思路
- 深入理解Java虚拟机学习笔记——二、垃圾收集器与内存分配策略
- 问题 N: 最少的步数
- 深入分析字符编码之-几种常见的字符编码格式
- Maven新导入项目时出现错误Failure to transfer commons-lang:commons-lang:jar:2.1 from https://repo.maven.apache.
- memset()函数的使用
- 原子指令分析