OpenCV提供比较运算的函数cv::compare(),函数原型:
cv::compare(
cv::InputArray src1, // first input array
cv::InputArray src2, // second input array
cv::OutputArray dst, // result array
int cmpop // comparision operator
);
该函数对两个矩阵进行逐元素比较,把结果放到dst中,dst的每个元素都是一个8位序列,匹配的像素被标记为255,不匹配的像素被设置为0。
参数cmpop作为比较运算符,可以是下列的值:
cmpop的值 | 比较操作 |
cv::CMP_EQ | (src1_i == src2_i) |
cv::CMP_GT | (src1_i > src2_i) |
cv::CMP_GE | (src1_i >= src2_i) |
cv::CMP_LT | (src1_i < src2_i) |
cv::CMP_LE | (src1_i <= src2_i) |
cv::CMP_NE | (src1_i != src2_i) |
通过比较运算符可以达到相同的效果,比如:
dst = (src1 == src2);就等价于cv::compare(src1, src2, dst,cv::CMP_EQ);
使用示例:
std::string strFilename = "Test.bmp";
cv::Mat img = cv::imread(strFilename);
if (img.empty()) {
std::cout << "ERROR: Open raw FAIL!" << std::endl;
return;
}
cv::Mat gray;
cv::cvtColor(img, gray, cv::COLOR_RGB2GRAY);
cv::namedWindow(strFilename, cv::WINDOW_NORMAL);
cv::Mat src2(gray.rows, gray.cols, gray.type(), cv::Scalar(64));
cv::Mat dst;
cv::compare(img, src2, dst, cv::CMP_GT);
cv::imshow(strFilename, dst);
cv::waitKey(0);
cv::destroyWindow(strFilename);
显示结果:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/46183.html
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容