تشخیص object با surf - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تشخیص object با surf

+1 امتیاز

سلام

میخاستم با الگوریتم surf یه object رو پیدا کنم و دورش یه خط بکشم که مشخص کنه این ناحیه بیشترین شباهت رو به object من داره مثل این تصویر

 

ممنون میشم یه نمونه کد با تضیح بزارین.

سوال شده بهمن 10, 1393  بوسیله ی محدثه (امتیاز 121)   9 28 42

1 پاسخ

0 امتیاز
int main(){
    //read image
    string img1_path = "../data/img1.jpg";
    string img2_path = "../data/img2.jpg";
    cv::Mat img1 = cv::imread(img1_path);
    cv::Mat img2 = cv::imread(img2_path);
    //convert to gray
    cv::Mat img1_gray, img2_gray;
    cv::cvtColor(img1, img1_gray, cv::COLOR_BGR2GRAY);
    cv::cvtColor(img2, img2_gray, cv::COLOR_BGR2GRAY);
    //detect keypoints and descriptors
    cv::Ptr<cv::xfeatures2d::SURF> detector = cv::xfeatures2d::SURF::create();
    std::vector<cv::KeyPoint> keypoints1, keypoints2;
    cv::Mat descriptors1, descriptors2;
    detector->detectAndCompute(img1_gray, cv::noArray(), keypoints1, descriptors1);
    detector->detectAndCompute(img2_gray, cv::noArray(), keypoints2, descriptors2);
    //matching
    cv::BFMatcher matcher(cv::NORM_L2);
    std::vector<cv::DMatch> matches;
    matcher.match(descriptors1, descriptors2, matches);
    //draw matches
    cv::Mat img_matches;
    cv::drawMatches(img1, keypoints1, img2, keypoints2, matches, img_matches);
    cv::imshow("matches", img_matches);
    cv::waitKey(0);
    return 0;
}

 

پاسخ داده شده تیر 25, 1401 بوسیله ی copilot (امتیاز 1,549)   1 3 6
...