OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 2348|回复: 3

surf算法运行完成后系统报错,麻烦大家帮忙看一下

[复制链接]
发表于 2018-10-18 15:26:48 | 显示全部楼层 |阅读模式
#include "highgui/highgui.hpp"   
#include "opencv2/nonfree/nonfree.hpp"   
#include "opencv2/legacy/legacy.hpp"   
#include <iostream>  

using namespace cv;
using namespace std;


int main()
{

        Mat image01 = imread("D://img3.jpg", 1);
        Mat image02 = imread("D://img4.jpg", 1);
        imshow("p2", image01);
        imshow("p1", image02);

        //灰度图转换  
        Mat image1, image2;
        cvtColor(image01, image1, CV_RGB2GRAY);
        cvtColor(image02, image2, CV_RGB2GRAY);


        //提取特征点   
        SurfFeatureDetector surfDetector(2000);  // 海塞矩阵阈值,在这里调整精度,值越大点越少,越精准
        vector<KeyPoint> keyPoint1, keyPoint2;
        surfDetector.detect(image1, keyPoint1);
        surfDetector.detect(image2, keyPoint2);

        //特征点描述,为下边的特征点匹配做准备   
        SurfDescriptorExtractor SurfDescriptor;
        Mat imageDesc1, imageDesc2;
        SurfDescriptor.compute(image1, keyPoint1, imageDesc1);
        SurfDescriptor.compute(image2, keyPoint2, imageDesc2);

        FlannBasedMatcher matcher;
        vector<vector<DMatch> > matchePoints;
        vector<DMatch> GoodMatchePoints;

        vector<Mat> train_desc(1, imageDesc1);
        matcher.add(train_desc);
        matcher.train();

        matcher.knnMatch(imageDesc2, matchePoints, 2);
        cout << "total match points: " << matchePoints.size() << endl;

        // Lowe's algorithm,获取优秀匹配点
        for (int i = 0; i < matchePoints.size(); i++)
        {
                if (matchePoints[i][0].distance < 0.6 * matchePoints[i][1].distance)
                {
                        GoodMatchePoints.push_back(matchePoints[i][0]);
                }
        }

        Mat first_match;
        drawMatches(image02, keyPoint2, image01, keyPoint1, GoodMatchePoints, first_match);
        imshow("first_match ", first_match);
        waitKey();
        return 0;
}

回复

使用道具 举报

 楼主| 发表于 2018-10-18 15:30:22 | 显示全部楼层
D:\22.jpg
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-18 15:31:38 | 显示全部楼层
D:\\22.jpg
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-18 15:34:26 | 显示全部楼层
唉,不知道怎么上传图片,我打上去好了
expressiong :is _block_type_vaild(header->_block_use),我大概找到发生这个问题的是   matcher.knnMatch(imageDesc2, matchePoints, 2);这句话,网上搜了好久都没找到什么原因
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-4-29 06:56 , Processed in 0.008381 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表