Как сравнить две колонки Mats в OpenCV - PullRequest
0 голосов
/ 10 апреля 2020

Интересно, как мы можем сравнить столбцы двух матов

вот что я делаю

 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'

так как сравнивать столбцы так как мне нужно сшить два изображения, для которых мне нужно сделать сравнение столбцов, так что, когда я присоединяю 2-е изображение к 1-му изображению, я хочу убедиться, что я прикрепляю его положение, где последний столбец 1-го изображения равен где-то во 2-м изображение таким образом, что дублирующаяся часть удаляется.

1 Ответ

2 голосов
/ 10 апреля 2020

Вы можете проверить, идентичны ли две матрицы, как объяснено здесь .

Вы можете передать столбцы вместо всей матрицы:

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));      
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...