我有2个cv :: Mat数组(大小相同),当我想比较它们(如果相同)时,我使用了cv :: compare
cv::compare(mat1,mat2,dst,cv::CMP_EQ);
Run Code Online (Sandbox Code Playgroud)
有没有返回true/false的函数?
如果您需要按尺寸比较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)