C++ 如何在OpenCV中比较两个Mats列

C++ 如何在OpenCV中比较两个Mats列,c++,opencv,C++,Opencv,我想知道我们如何比较两个垫子的柱子 这就是我所做的 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 } } 所以如何比较列,因为我必须粘贴两个图像,我需要按列进行比较,这样

我想知道我们如何比较两个垫子的柱子

这就是我所做的

 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

     }

 }

所以如何比较列,因为我必须粘贴两个图像,我需要按列进行比较,这样当我将第二个图像与第一个图像连接时,我希望确保将其连接到第一个图像的最后一列等于第二个图像中某个位置的位置,以便消除重复部分

如前所述,您可以检查两个矩阵是否相同

您可以传递列而不是整个矩阵:

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));      
}

您可以检查两个矩阵是否如所述相同

您可以传递列而不是整个矩阵:

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));      
}