如何比较 OpenCV 中的两个 Mats 列
Posted
技术标签:
【中文标题】如何比较 OpenCV 中的两个 Mats 列【英文标题】:How to compare two Mats columns in OpenCV 【发布时间】:2020-04-10 13:33:48 【问题描述】:我想知道我们如何比较两个垫子的列
这是在做什么
cv::Mat M(2,2, CV_8UC3, cv::Scalar(0,0,255));
cv::Mat M2(2,2, CV_8UC3, cv::Scalar(0,0,255));
for(int c = 0; c < M.cols; c++ )
if( M.col(c) == M2.col(0) ) // error
遇到错误
error: no viable conversion from 'cv::MatExpr' to 'bool'
所以如何比较列,因为我必须拼接两张我需要逐列比较的图像,这样当我将第二张图像与第一张图像附加时,我想确保我将它附加到最后一列的位置第一张图像等于第二张图像中的某处,因此消除了重复部分。
【问题讨论】:
【参考方案1】:您可以按照here 的说明检查两个矩阵是否相同。
您可以传递列而不是整个矩阵:
bool are_equal(const cv::Mat& a, const cv::Mat& b)
return (cv::sum(a != b) == cv::Scalar(0, 0, 0, 0));
int main()
cv::Mat3b a(3, 3);
cv::Mat3b b(3, 3);
cv::randu(a, 0, 9);
cv::randu(b, 0, 9);
bool same_columns = are_equal(a.col(1), b.col(2));
【讨论】:
以上是关于如何比较 OpenCV 中的两个 Mats 列的主要内容,如果未能解决你的问题,请参考以下文章