opencv 叠加两张图_【OpenCV学习】计算两幅图像的重叠区域

该博客详细介绍了如何使用OpenCV进行图像处理,通过SIFT关键点匹配和homography找到两幅图像的重叠部分,并将它们正确地叠加在一起。首先将图像转换为灰度,然后应用SIFT算法提取关键点和描述符,接着使用FlannBasedMatcher匹配关键点,找到距离小于三倍最小距离的匹配点。通过RANSAC找到透视变换矩阵,最后使用透视变换和图像剪裁将两幅图像正确叠加。
摘要由CSDN通过智能技术生成

1 bool ImageOverlap(cv::Mat &img1,cv::Mat &img2,std::vector<:point> &vPtsImg1,std::vector<:point> &vPtsImg2)2 {3 cv::Mat g1(img1,Rect(0,0,img1.cols,img1.rows));4 cv::Mat g2(img2,Rect(0,0,img2.cols,img2.rows));5

6 cv::cvtColor(g1,g1,CV_BGR2GRAY);7 cv::cvtColor(g2,g2,CV_BGR2GRAY);8

9 std::vector<:keypoint> keypoints_roi, keypoints_img; /*keypoints found using SIFT*/

10 cv::Mat descriptor_roi, descriptor_img; /*Descriptors for SIFT*/

11 cv::FlannBasedMatcher matcher; /*FLANN based matcher to match keypoints*/

12 std::vector<:dmatch>matches, good_matches;13 cv::SIFT sift;14 int i, dist=80;15

16 sift(g1, Mat(), keypoints_roi, descriptor_roi); /*get keypoints of ROI image*/

17 sift(g2, Mat(), keypoints_img, descriptor_img); /*get keypoints of the image*/

18 matcher.match(descriptor_roi, descriptor_img, matches);19

20 double max_dist &

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值