has no member named ‘pt’.pt

home/ning/vscode/sift/sift.cpp: In function ‘int main(int, char**):
/home/ning/vscode/sift/sift.cpp:136:64: error: ‘__gnu_cxx::__alloc_traits<std::allocator<cv::Point_<float> > >::value_type {aka class cv::Point_<float>}’ has no member named ‘pt’
          point1.push_back(point1[GoodMatchePoints[i].queryIdx].pt);
                                                                ^
/home/ning/vscode/sift/sift.cpp:137:64: error: ‘__gnu_cxx::__alloc_traits<std::allocator<cv::Point_<float> > >::value_type {aka class cv::Point_<float>}’ has no member named ‘pt’
          point2.push_back(point2[GoodMatchePoints[i].trainIdx].pt);

解决方法
手动编写透视变换矩阵

cv::Point2f img1srcQuad[]=
   {
        cv::Point2f(0,0),
        cv::Point2f(img1.cols-1,0),
        cv::Point2f(img1.cols-1,img_match.rows-1),
       cv::Point2f(0,img1.rows-1)
    };
   cv::Point2f img1dstQuad[]={
       cv::Point2f(img1.cols*0.05f,img1.rows*0.33f),
       cv::Point2f(img1.cols*0.9f,img1.rows*0.25f),
        cv::Point2f(img1.cols*0.8f,img1.rows*0.9f),
        cv::Point2f(img1.cols*0.2f,img1.rows*0.7f)
    };
   Mat   warp_mat=getPerspectiveTransform(img1srcQuad,img1dstQuad);
   cout << "变换矩阵为:\n" << warp_mat << endl << endl; 
   
   Mat imageTransform1, imageTransform2;

   cv::warpPerspective(img1,imageTransform1,warp_mat,img1.size(),img2.rows);

执行warpperspective时,一直报错,size类型不知如何设置
故将其设置为图片1 的大小img1。size()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值