OpenCV笔记:compare()函数介绍
来源:互联网 发布:清风冰桶算法 编辑:程序博客网 时间:2024/05/19 05:33
OpenCV中定义在core.hpp中的compare()函数原型如下:
void compare(InputArray src1, InputArray src2, OutputArray dst, int cmpop);
函数作用:
按照指定的操作cmpop,比较输入的src1和src2中的元素,输出结果到dst中
参数解释:
src1:原始图像1(必须是单通道)或者一个数值,比如是一个Mat或者一个单纯的数字n;
src2:原始图像2(必须是单通道)或者一个数值,比如是一个Mat或者一个单纯的数字n;
dst:结果图像,类型是CV_8UC1,即单通道8位图,大小和src1和src2中最大的那个一样,比较结果为真的地方值为 255,否则为0;
cmpop:操作类型,有以下几种类型:
enum { CMP_EQ=0, //相等CMP_GT=1, //大于CMP_GE=2, //大于等于CMP_LT=3, //小于CMP_LE=4, //小于等于CMP_NE=5 }; //不相等
函数原理:
从参数的要求可以看出,compare函数只对以下三种情况进行比较:
1. array和array
此时输入的src1和src2必须是相同大小的单通道图,否则没办法进行比较了。计算过程就是:
dst(i) = src1(i) cmpop src2(i)
也就是对src1和src2逐像素进行比较。
2. array和scalar
此时array仍然要求是单通道图,大小无所谓,因为scalar只是一个单纯的数字而已。比较过程是把array中的每个元素逐个和scalar进行比较,所以此时的dst大小和array是一样 的。计算过程是:
dst(i) = src1(i) cmpop scalar
3. scalar和array
这个就是2的反过程了,只是比较运算符cmpop左右的参数顺序不一样了而已。计算过程如下:
dst(i) = scalar cmpop src2(i)
用途举例:
这个函数有一个很有用的地方就是:当你需要从一幅图像中找出那些特定像素值的像素时,可以用这个函数。类似与threshold()函数,但是threshold()函数是对某个区间内的像素值进行操作,compare()函数则可以只是对某一个单独的像素值进行操作。比如我们要从图像中找出像素值为50的像素点,可以下面这样做:
cv::Mat result;cv::compare(image,50, result, cv::CMP_EQ);
- OpenCV笔记:compare()函数介绍
- 【OpenCV笔记 01】OpenCV基本函数介绍
- PriorityQueue的compare函数介绍
- PriorityQueue的compare函数介绍
- 【OpenCV学习笔记】【函数学习】十六(Rect参数介绍)
- OpenCV函数介绍
- opencv Rect()函数介绍
- OpenCV函数笔记
- OpenCV 函数学习笔记
- openCV中waitKey函数介绍
- openCV中waitKey函数介绍
- openCV中waitKey函数介绍
- openCV中waitKey函数介绍
- opencv笔记6 opencv中的cvAddWeighted函数
- POJ1256 (C++ compare函数)
- C++中compare函数
- compare函数的使用
- qsort的compare函数
- POJ-----2253---Frogger---最短路
- 亮仔的 Android 笔记第 0 章
- JNI学习积累之一 ---- 常用函数大全
- 见证未来IT大神的成长
- JavaScript 的性能优化:加载和执行
- OpenCV笔记:compare()函数介绍
- AppleScript语言介绍(译文)
- Example: Showing a Message in JavaMail
- Linux--进程间通信之共享内存
- 机器学习算法笔记之2:感知机
- codeforce Anton and Fairy Tale
- 工厂方法模式--应用最广(创建型模式02)
- 继承View 自定义开关
- Greedy Tino-动态规划