进一步匹配(寻找源图与目标图像之间的透视变换)
来源:互联网 发布:linux init3 编辑:程序博客网 时间:2024/06/07 06:48
bool refineMatchesWithHomography(const std::vector<cv::KeyPoint>& queryKeypoints,const std::vector<cv::KeyPoint>& trainKeypoints, float reprojectionThreshold,std::vector<cv::DMatch>& matches,cv::Mat& homography) { const int minNumberMatchesAllowed = 8; if (matches.size() < minNumberMatchesAllowed) return false; // Prepare data for cv::findHomography std::vector<cv::Point2f> srcPoints(matches.size()); std::vector<cv::Point2f> dstPoints(matches.size()); for (size_t i = 0; i < matches.size(); i++) { srcPoints[i] = trainKeypoints[matches[i].trainIdx].pt; dstPoints[i] = queryKeypoints[matches[i].queryIdx].pt; //srcPoints[i] = trainKeypoints[i].pt; //dstPoints[i] = queryKeypoints[i].pt; } // Find homography matrix and get inliers mask std::vector<unsigned char> inliersMask(srcPoints.size()); homography = cv::findHomography(srcPoints,dstPoints,CV_FM_RANSAC,reprojectionThreshold,inliersMask); std::vector<cv::DMatch> inliers; for (size_t i = 0; i<inliersMask.size(); i++) { if (inliersMask[i]) inliers.push_back(matches[i]); } matches.swap(inliers); return matches.size() > minNumberMatchesAllowed; }
参考:
Opencv图像识别从零到精通(23)----轮廓
opencv3.1.0 特征点检测与图像匹配(features2d、xfeatures2d)
Opencv图像识别从零到精通(30)---重映射,仿射变换
0 0
- 进一步匹配(寻找源图与目标图像之间的透视变换)
- 图像之间存在透视变换的条件
- 图像的透视变换
- 图像的仿射变换与透视变换opencv
- 图像的透视变换(opencv2实现)
- 图像的透视变换_matlab
- OpenCV图像变换(仿射变换与透视变换)
- 图像基础12 透视投影与透视变换
- 图像处理之_仿射变换与透视变换
- 图像校正-透视变换
- 图像处理的仿射变换和透视变换
- 图像处理的仿射变换和透视变换
- C/C++ 图像处理(12)------图像の透视变换
- 图像校正—透视变换
- 图像仿射,透视变换
- 图像处理18:透视变换
- 基于OpenCV的图像配准之后的透视变换
- opencv系列之一 利用透视变换实现图像的俯视图(正视图)
- hihoCoder
- JavaScript闭包究竟是什么
- Unity游戏开发性能优化(Sprite优化)
- Java设计模式之单例模式(Singleton Pattern)
- 河南工业大学2017“玲珑杯”程序设计竞赛 08
- 进一步匹配(寻找源图与目标图像之间的透视变换)
- 0416-css盒子模型
- Linux 内核 总结
- Android 多媒体之MediaStore
- 《你不知道的JavaScript》读书笔记(一):变量的声明和变量提升
- [BZOJ1046][HAOI2007]上升序列(dp+贪心)
- TCP/IP
- CSS实现居中
- Android 透明应用