warpProspective координируется
Я преобразую image2 по отношению к image1, используя функцию "warpperspective" opencv.
изображение weput как ниже. Кто-нибудь может сказать мне, как я могу узнать координату, указанную ниже на рисунке?
код для Warprospective выглядит следующим образом -
std::vector< Point2f > points1,points2;
for( int i = 0; i < matches1.size(); i++ )
{
points1.push_back( keypoints_input1[matches1[i].queryIdx ].pt );
points2.push_back( keypoints_input2[matches1[i].trainIdx ].pt );
}
/* Find the Homography Matrix for current and next frame*/
Mat H1 = findHomography( points2, points1, CV_RANSAC );
/* Use the Homography Matrix to warp the images*/
cv::Mat result1;
warpPerspective(input2, result1, H1, Size(input2.cols+150, input2.rows+150),
INTER_CUBIC);
imshow("resut",result1);
...
}
Благодарю.
1 ответ
Решение
Чтобы найти координаты углов деформированного изображения, вы можете сделать следующее:
cv::Mat_<float> p(3,1), c_topleft, c_topright, c_botleft, c_botright;
p(0)=0; p(1)=0; p(2)=1;
c_topleft=H1*p; c_topleft/=c_topleft(2); // Top-Left corner
p(0)=input2.cols-1; p(1)=0; p(2)=1;
c_topright=H1*p; c_topright/=c_topright(2); // Top-right corner
p(0)=0; p(1)=input2.rows-1; p(2)=1;
c_botleft=H1*p; c_botleft/=c_botleft(2); // Bottom-left corner
p(0)=input2.cols-1; p(1)=input2.rows-1; p(2)=1;
c_botright=H1*p; c_botright/=c_botright(2); // Bottom-right corner