我正在开发一个程序,我收到同一场景的2张图片,但其中一张有失真:
Mat img_1 = imread(argv[1], 0); // nORMAL pICTURE
Mat img_2 = imread(argv[2], 0); // PICTURE WITH DISTORTION
我想评估这些不正确的模式并且可以用来补偿它
我已经找到了关键点,我想知道我是否可以使用这个功能cv :: findHomography ...无论如何,怎么做?
答案 0 :(得分:2)
答案 1 :(得分:1)
好吧,假设我有两张图片(A和B)彼此略微扭曲,它们之间存在平移,旋转和刻度差异(例如,这些图片:)
Ssoooooooo我需要的是在图片B中应用一种变换,以便它补偿存在的失真/平移/旋转,使两张图片具有相同的大小,方向和无翻译
我已经提取了点并找到了Homography,如下图所示。但是我不知道如何使用Homography来转换Mat img_B
所以它看起来像Mat img_A
。有什么想法吗?
//-- Localize the object from img_1 in img_2
std::vector<Point2f> obj;
std::vector<Point2f> scene;
for (unsigned int i = 0; i < good_matches.size(); i++) {
//-- Get the keypoints from the good matches
obj.push_back(keypoints_object[good_matches[i].queryIdx].pt);
scene.push_back(keypoints_scene[good_matches[i].trainIdx].pt);
}
Mat H = findHomography(obj, scene, CV_RANSAC);
干杯,