• 大小: 20.98MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-07
  • 语言: 其他
  • 标签: opencv  

资源简介

在opencv的实际使用,经常遇到这种情况,自己在电脑上配置了opencv,写好了opencv的代码工程,在环境变量中加了opencv的dll的路径,这样可以在自己电脑上运行代码。但是如果将该工程拷贝到其他没有配置opencv的电脑上就无法运行。解决办法:在配置了opencv的电脑上(但是在环境变量中没有添加dll的路径),将调用相关函数的代码封装成函数,生成dll文件,拷贝到其他没配置opencv的电脑上,再解析该dll,将该dll中调用的一些opencv的函数涉及到的opencv的dll拷贝下就行。

资源截图

代码片段和文件信息

#include“dll_sift.h“

//生成dll文件声明  
extern “C“ __declspec(dllexport) void sift(char* src char* dst); //sift配准函数
extern “C“ __declspec(dllexport) void sift_pixel(char* src);   //sift特征提取函数

void sift(char* src char* dst)  
{    
    Mat image01=imread(src);    
    Mat image02=imread(dst);  
    imshow(“原始测试图像“image01);  
    imshow(“基准图像“image02);  
  
    //灰度图转换  
    Mat image1image2;    
    cvtColor(image01image1CV_RGB2GRAY);  
    cvtColor(image02image2CV_RGB2GRAY);  
  
  
    //提取特征点    
    SurfFeatureDetector surfDetector(800);  // 海塞矩阵阈值  
    vector keyPoint1keyPoint2;    
    surfDetector.detect(image1keyPoint1);    
    surfDetector.detect(image2keyPoint2);    
  
    //特征点描述,为下边的特征点匹配做准备    
    SurfDescriptorExtractor SurfDescriptor;    
    Mat imageDesc1imageDesc2;    
    SurfDescriptor.compute(image1keyPoint1imageDesc1);    
    SurfDescriptor.compute(image2keyPoint2imageDesc2);      
  
    //获得匹配特征点,并提取最优配对     
    FlannbasedMatcher matcher;  
    vector matchePoints;    
    matcher.match(imageDesc1imageDesc2matchePointsMat());  
    sort(matchePoints.begin()matchePoints.end()); //特征点排序    
  
    //获取排在前N个的最优匹配特征点  
    vector imagePoints1imagePoints2;      
    for(int i=0;i<10;i++)  
    {         
        imagePoints1.push_back(keyPoint1[matchePoints[i].queryIdx].pt);       
        imagePoints2.push_back(keyPoint2[matchePoints[i].trainIdx].pt);       
    }  
  
    //获取图像1到图像2的投影映射矩阵 尺寸为3*3  
    Mat homo=findHomography(imagePoints1imagePoints2CV_RANSAC);  
    ////也可以使用getPerspectiveTransform方法获得透视变换矩阵,不过要求只能有4个点,效果稍差  
    //Mat   homo=getPerspectiveTransform(imagePoints1imagePoints2);     
        cout<<“变换矩阵为:\n“<    //图像配准  
    Mat imageTransform1imageTransform2;  
    warpPerspective(image01imageTransform1homoSize(image02.colsimage02.rows));    
    imshow(“经过透视矩阵变换后“imageTransform1);  
      
    waitKey(1000);      
}  

void sift_pixel(char* src)
{
    //从文件中读入图像
    Mat img = imread(src);
    //如果读入图像失败
    if(img.empty())
fprintf(stderr “Can not load image %s\n“ src);
    //显示图像
    imshow(“image before“ img);
    //sift特征检测
    SiftFeatureDetector  siftdtc;
    vectorkp1;
 
    siftdtc.detect(imgkp1);
    Mat outimg1;
    drawKeypoints(imgkp1outimg1);
    imshow(“image1 keypoints“outimg1);

    //此函数等待按键,按键盘任意键就返回
    waitKey();
}







 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     111104  2017-12-03 18:37  dll_sift\Debug\dll_sift.dll

     文件        613  2017-12-03 18:39  dll_sift\Debug\dll_sift.exp

     文件     534696  2017-12-03 18:37  dll_sift\Debug\dll_sift.ilk

     文件       1692  2017-12-03 18:39  dll_sift\Debug\dll_sift.lib

     文件    1494016  2017-12-03 18:37  dll_sift\Debug\dll_sift.pdb

     文件        550  2017-12-03 18:40  dll_sift\dll_sift\Debug\cl.command.1.tlog

     文件      16358  2017-12-03 18:40  dll_sift\dll_sift\Debug\CL.read.1.tlog

     文件        304  2017-12-03 18:40  dll_sift\dll_sift\Debug\CL.write.1.tlog

     文件       1560  2017-12-03 18:32  dll_sift\dll_sift\Debug\dll_sift.Build.CppClean.log

     文件         57  2017-12-03 18:40  dll_sift\dll_sift\Debug\dll_sift.lastbuildstate

     文件        712  2017-12-03 18:40  dll_sift\dll_sift\Debug\dll_sift.log

     文件     412724  2017-12-03 18:37  dll_sift\dll_sift\Debug\dll_sift.obj

     文件          0  2017-12-03 18:40  dll_sift\dll_sift\Debug\dll_sift.unsuccessfulbuild

     文件        228  2017-12-03 18:37  dll_sift\dll_sift\Debug\dll_sift.write.1.tlog

     文件          2  2017-12-03 18:39  dll_sift\dll_sift\Debug\link-cvtres.read.1.tlog

     文件          2  2017-12-03 18:39  dll_sift\dll_sift\Debug\link-cvtres.write.1.tlog

     文件          2  2017-12-03 18:39  dll_sift\dll_sift\Debug\link-mt.read.1.tlog

     文件          2  2017-12-03 18:39  dll_sift\dll_sift\Debug\link-mt.write.1.tlog

     文件          2  2017-12-03 18:39  dll_sift\dll_sift\Debug\link-rc.read.1.tlog

     文件          2  2017-12-03 18:39  dll_sift\dll_sift\Debug\link-rc.write.1.tlog

     文件          2  2017-12-03 18:39  dll_sift\dll_sift\Debug\link.command.1.tlog

     文件          2  2017-12-03 18:39  dll_sift\dll_sift\Debug\link.read.1.tlog

     文件          2  2017-12-03 18:39  dll_sift\dll_sift\Debug\link.write.1.tlog

     文件     519168  2017-12-03 18:37  dll_sift\dll_sift\Debug\vc110.idb

     文件    1110016  2017-12-03 18:37  dll_sift\dll_sift\Debug\vc110.pdb

     文件       2721  2017-12-03 20:39  dll_sift\dll_sift\dll_sift.cpp

     文件        239  2017-12-03 18:04  dll_sift\dll_sift\dll_sift.h

     文件       5333  2017-12-03 20:45  dll_sift\dll_sift\dll_sift.vcxproj

     文件       1067  2017-12-03 18:04  dll_sift\dll_sift\dll_sift.vcxproj.filters

     文件        164  2017-12-03 18:04  dll_sift\dll_sift\dll_sift.vcxproj.user

............此处省略121个文件信息

评论

共有 条评论