opencv_contrib的编译与运行(windows)

在用到opencv中的特征点检测与图像匹配的时候,发现基础的opencv库中没有这个功能,需要下载opencv_contrib的库并进行编译。

平台:windows10

版本相同的opencv源码和opencv_contrib源码:

Release OpenCV 4.5.0 · opencv/opencv · GitHub

Release 4.5.0 · opencv/opencv_contrib · GitHub

我下载的是4.5.0的版本的opencv和opencv_contrib的source code(zip)的文件

 下载之后,是这两个文件:

cmake: 

下载地址:Download | CMake

我用的是cmake-3.16.0的版本

cmake编译opencv的源码

我的目录的结构方式,在D盘新建一个opencv_450的文件夹,在其中新建source的文件夹放opencv-4.5.0.zip解压后的源码,新建build的文件夹放编译后的结果,将opencv_contrib-4.5.0.zip解压后的文件,放到opencv_450的根目录中。

开始配置的过程中,会有报错,需要一个个的解决报错,主要是因为有些文件没有下载下来。

在文件中搜索cmake_download ,找到每个cmake_download ,后面是文件路径,比如:“D:/3rdpartys/opencv_450/source/.cache/ade/b624b995ec9c439cbc2e9e6ee940d3a2-v0.1.1f.zip”

再后面是文件下载的链接"https://github.com/opencv/ade/archive/v0.1.1f.zip",把下载后的文件修改名字为b624b995ec9c439cbc2e9e6ee940d3a2-v0.1.1f.zip

下载文件的时候需要挂梯子,有些文件是外面的。

放到"D:/3rdpartys/opencv_450/source/.cache/ade/b624b995ec9c439cbc2e9e6ee940d3a2-v0.1.1f.zip"

例如,其中的ffmpeg的文件,手动下载之后,然后改名字的样子:

 将CMakeDownloadLog.txt中所有下载报错的文件,全部处理之后,点击configure,cmake记录区不会再有红色的地方,说明配置成功,以下动图是配置成功的样子:

cmake中编译opencv_contrib

在上栏界面中的变量中找到BUILD_opencv_world和OPENCV_ENABLE_NONFREE两个变量,在变量后面的方框中勾选,即打上 √,随后,找到OPENCV_EXTRA_MODULES_PATH变量,在此变量后面加上【opencv_contrib4.5.0】文件夹里的【modules文件夹】的路径。最后再次点击【Configure】,直到上栏所有的红色变量变成白色。
如果下栏记录区有红色字体,就按照上面1的步骤重新执行,直到所有的字体都变为白色字体。


 

生成vs2019的工程,编译opencv的库

 用vs2019打开该工程,在选项卡中的“生成”-“批生成”中:

 编译的时间会比较长,编译成功之后,是以下的画面:

 在build/install的路径下,会看到会下载的编译好的opencv的库一样的目录结构:

配置opencv_450的环境:

设置环境变量:

附加包含目录:
D:\3rdpartys\opencv_450\build\install\include
D:\3rdpartys\opencv_450\build\install\include\opencv2

附加库目录:
D:\3rdpartys\opencv_450\build\install\x64\vc16\lib

附加依赖项_debug:
opencv_world450d.lib

 写一个c++的测试程序,调用ORB算子,检测特征点,如下:

#include <opencv2/opencv.hpp>
#include <opencv2/xfeatures2d/nonfree.hpp>
#include <iostream>
using namespace std;


int main() 
{
	cv::Mat imageL = cv::imread("zidane.jpg");

	cv::Mat imageL1, imageR1;
	cv::resize(imageL, imageL1, cv::Size(0, 0), 0.25, 0.25, cv::INTER_LINEAR);

	cv::Ptr<cv::ORB> orb = cv::ORB::create();
	std::vector<cv::KeyPoint> keyPointL;
	
	orb->detect(imageL, keyPointL);		//单独提取特征点

	
	cv::Mat keyPointImageL;	//画特征点
	drawKeypoints(imageL, keyPointL, keyPointImageL, cv::Scalar::all(-1), cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
	cv::namedWindow("鼠标特征带点");
	cv::imshow("鼠标特征带点", keyPointImageL);


	cv::waitKey(0);
	return 0;
}

参考博客:

 快速上手opencv_contrib安装(Windows11)_contrib4.2.0安装包_星星爱说话的博客-CSDN博客

 OpenCV_contrib配置教程(详细版)_opencv-contrib_-_Matrix_-的博客-CSDN博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值