2013-04-04 3 views
5

Я использую функцию findHomography OpenCV с помощью метода RANSAC, чтобы найти гомографию, которая связывает два изображения, связанные с набором ключевых точек. Основная проблема заключается в том, что я еще не смог найти какие-то значения матрицы масок, которые выводит функция. Только информация, которую я знаю, это то, что 0 значений являются выбросами, а ненулевые значения являются значениями. Но что это значит, что значение линеек? Кто-нибудь знает?OpenCV C++ findHomography значения маски значения

Заранее благодарен!

Кусок кода, где я называю findHomography:

cv::Mat H12; 
cv::Mat mask; 

H12 = cv::findHomography(FvPointsIm1, FvPointsIm2, mask, CV_RANSAC, 5); 
ui->Debug_Label->setText(Mat2QString(mask)); 
+0

Вы спрашиваете о значении различий inlier/outlier или о численных значениях в маске? – Aurelius

+0

О численных значениях в маске. – jsalvador

+0

Вы когда-нибудь получали значения, отличные от '0' или' 1'? – Aurelius

ответ

10

Маска возвращаемый findHomography представляет собой 8-битный одноканальный cv::Mat (или std::vector<uchar>, если вы предпочитаете), содержащие либо 0 или 1 указывает на выброс положение дел.

EDIT: Вы получаете доступ к каждому элементу маски, вызывая .at<double>, что приводит к запутанному выходу. Вы должны использовать , который правильно интерпретирует значение матрицы.

+0

Чтобы преобразовать значения маски в QString, я использую для каждого поля матрицы следующее: 'QString :: number (mask.at (i, j))' – jsalvador

+0

Приятно, это была ошибка. Большое спасибо! – jsalvador

+1

Я не могу напечатать значение правильно, используя: 'mask.at (0, 0)'. Он печатает значок маленькой матрицы со значениями «0 0, 0 1» ... Знаете ли вы, почему? – JonesV

Смежные вопросы