比较2 cv :: Mat

Quy*_*Anh 6 c++ opencv

我有2个cv :: Mat数组(大小相同),当我想比较它们(如果相同)时,我使用了cv :: compare

cv::compare(mat1,mat2,dst,cv::CMP_EQ);
Run Code Online (Sandbox Code Playgroud)

有没有返回true/false的函数?

mad*_*uci 8

如果您需要按尺寸比较2 cv :: Mat,那么您可以查看

if(mat1.size() == mat2.size())
    //do stuff
else
    //do other stuff
Run Code Online (Sandbox Code Playgroud)

如果你需要检查2 cv :: Mat是否相等,你可以执行 XOR运算符并检查结果是否为cv :: Mat满零:

cv::bitwise_xor(mat1, mat2, dst);        
if(cv::countNonZero(dst) > 0) //check non-0 pixels
   //do stuff in case cv::Mat are not the same
else
  //do stuff in case they are equal
Run Code Online (Sandbox Code Playgroud)


小智 6

如果您需要检查 2 cv::Mat 是否相等,您可以执行 AND 运算符并检查结果是否是一个 cv::Mat 全零:

AND 运算符不适用于此任务。如果一个矩阵全为 0,则无论另一个矩阵是否全为 0,它都将始终返回 true。

在这种情况下必须使用 XOR。

这里是blackibiza代码的修改版本:

cv::bitwise_xor(mat1, mat2, dst);        
if(cv::countNonZero(dst) > 0) //check non-0 pixels
   //do stuff in case cv::Mat are not the same
else
  //do stuff in case they are equal
Run Code Online (Sandbox Code Playgroud)