91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 7KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-13
  • 語言: C/C++
  • 標簽: surf??ransac??

資源簡介

surf特征點匹配加上ransac算法去除誤匹配特征點,基于opencv實現的,配置好相應環境后可直接運行實現

資源截圖

代碼片段和文件信息

#include?
#include?
#include?

using?namespace?std;
using?namespace?cv;
using?namespace?cv::xfeatures2d;


void?surfMatch_ransac(Mat?srcImage1Mat?srcImage2Mat&Homgimg_matches)?{
//【0】改變console字體顏色??
system(“color?1F“);


//【1】載入原始圖片??
/*Mat?srcImage1?=?imread(“1.jpg“?1);
Mat?srcImage2?=?imread(“2.jpg“?1);*/
Mat?copysrcImage1?=?srcImage1.clone();
Mat?copysrcImage2?=?srcImage2.clone();



//【2】使用SURF算子檢測關鍵點??
int?minHessian?=?800;//SURF算法中的hessian閾值??
//SurfFeatureDetector?detector(minHessian);//定義一個SurfFeatureDetector(SURF)?特征檢測類對象????
vector?keypoints_object?keypoints_scene;//vector模板類,存放任意類型的動態數組??
Ptrdetect?=?SURF::create(minHessian?4?3?true?true);
???//【3】調用detect函數檢測出SURF特征關鍵點,保存在vector容器中??
Mat?descriptors_object?descriptors_scene;
detect->detectAndCompute(srcImage1Mat()?keypoints_objectdescriptors_object);
detect->detectAndCompute(srcImage2?Mat()keypoints_scenedescriptors_scene);

//【4】計算描述符(特征向量)??
/*SurfDescriptorExtractor?extractor;

extractor.compute(srcImage1?keypoints_object?descriptors_object);
extractor.compute(srcImage2?keypoints_scene?descriptors_scene);*/

//【5】使用FLANN匹配算子進行匹配??
FlannbasedMatcher?matcher;
vector?matches;
matcher.match(descriptors_object?descriptors_scene?matches);
sort(matches.begin()?matches.end());
vector?good_matches;
int?ptsPairs?=?std::min(30?(int)(matches.size()?*?0.15));//匹配點數量不大于20
cout?< for?(int?i?=?0;?i? {
good_matches.push_back(matches[i]);//距離最小的50個壓入新的DMatch
}
//double?max_dist?=?0;?double?min_dist?=?100;//最小距離和最大距離??

// ???//【6】計算出關鍵點之間距離的最大值和最小值??
//for?(int?i?=?0;?i?riptors_object.rows;?i++)
//{
// double?dist?=?matches[i].distance;
// if?(dist? // if?(dist?>?max_dist)?max_dist?=?dist;
//}

//printf(“>Max?dist?最大距離?:?%f?\n“?max_dist);
//printf(“>Min?dist?最小距離?:?%f?\n“?min_dist);

////【7】存下匹配距離小于3*min_dist的點對??
//std::vector?good_matches;
//for?(int?i?=?0;?i?riptors_object.rows;?i++)
//{
// if?(matches[i].distance? // {
// good_matches.push_back(matches[i]);
// }
//}

//繪制出匹配到的關鍵點??
Mat?img_matches;
drawMatches(srcImage1?keypoints_object?srcImage2?keypoints_scene
good_matches?img_matches?Scalar::all(-1)?Scalar::all(-1)
vector()?DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS);

//定義兩個局部變量??
vector?obj;
vector?scene;

//從匹配成功的匹配對中獲取關鍵點??
for?(unsigned?int?i?=?0;?i? {
obj.push_back(keypoints_object[good_matches[i].queryIdx].pt);
scene.push_back(keypoints_scene[good_matches[i].trainIdx].pt);
}
vector?listpoints;

//Mat?H?=?findHomography(?obj?scene?CV_RANSAC?);//計算透視變換???
Mat?H?=?findHomography(obj?scene?CV_RANSAC?3

評論

共有 條評論