cv::compare()主要用于两个图像之间进行逐像素的比较,并输出比较的结果。具体用法如下:
cv::compare()
bool cv::compare(
cv::InputArray src1, // 输入数组1
cv::InputArray src2, // 输入数组2
cv::OutputArray dst, // 输出数组
int cmpop // 比较操作子,见下表
);
其中支持的比较操作有以下几种:
下面直接通过一段代码来看这个函数具体有什么妙用:
#include <opencv2/opencv.hpp>
#include <iostream>
int main()
{
cv::Mat img0 = cv::imread("img0.jpg", -1);
cv::Mat img1 = cv::imread("img1.jpg", -1);
if (img0.empty())
{
std::cout << "load img0 failed!\n" << std::endl;
return -1;
}
if (img1.empty())
{
std::cout << "load img1 failed!\n" << std::endl;
return -1;
}
cv::Mat img2;
cv::compare(img0, img1, img2, cv::CMP_GT);
cv::imshow("img0", img0);
cv::imshow("img1", img1);
cv::imshow("img2", img2);
cv::waitKey(0);
return 0;
}
结果如下:
输入1:
输入2:
输出:
由此可见,cv::compare可以用于静止背景下移动物体的检测等应用。
2018.08.12