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
Другие вопросы по тегам