【机器视觉学习笔记】VS2015 安装 opencv_contrib并测试

目录

  • opencv_contrib的获取
  • 主要工具
  • 编译 opencv
  • 编译 opencv_contrib
  • Visual Studio 编译
  • 配置新项目的环境
    • 添加包含目录
    • 添加库目录
    • 配置调试环境
    • 添加依赖项
  • 测试

平台:Windows 10 20H2
Visual Studio 2015
opencv_contrib-3.4.12


参考文章:
添加OpenCV_contrib库至OpenCV3.1.0中(Windows 64位 环境下编译OpenCV3.1.0和OpenCV_contrib)—— MICHAEL_LIU
opencv_contrib安装笔记 —— weijifen000

        Releases - OpenCV上的OpenCV所包含的库只有基础内容,而人脸识别、matlab调用、RGB加工、深层神经网络等内容则需要安装opencv_contrib。

opencv_contrib的获取

        Github:opencv/opencv_contrib

主要工具

  1. Cmake:我下载的安装包是cmake-3.21.2-windows-x86_64.msi。
  2. opencv 和 opencv_contrib,版本要一致,我安装的版本是3.4.12。
  3. Visual Studio:我所用的版本是2015。

编译 opencv

        使用cmake的时候需使用python 2.7,否则之后貌似会有警告。
        使用Anaconda3建立环境后,进入python 2.7环境。
        在python 2.7环境下打开cmake
在这里插入图片描述
        Where is the source code内填入opencv解压目录下的 sources 文件夹路径
        Where to build the binaries内填入输出路径
在这里插入图片描述

        点击Configure
在这里插入图片描述

        选择所用的Visual Studio版本和系统平台
在这里插入图片描述
        确认下方框内无红色警告
在这里插入图片描述
        若有警告,打开警告位置的日志文件
在这里插入图片描述
        查找cmake_download字符串,其后第一个路径是文件放置位置,第二个网址是下载地址

        缺的文件会由于下载失败变成0kb的文件
在这里插入图片描述
        下载后改成相同的名字将其替换

在这里插入图片描述
        之后再次点击Configure,确认上下方都没红色警告,且提示Configuring done
在这里插入图片描述

        之后点击Generate,出现Generating done
在这里插入图片描述

编译 opencv_contrib

        在 search 对话框中输入 OPENCV_EXTRA_MODULES_PATH,找到OPENCV_EXTRA_MODULES_PATH后在value中填入opencv_contrib解压目录下的modules路径,反斜杠\要改成正斜杠/
在这里插入图片描述
        在 search 对话框中输入 OPENCV_ENABLE_NONFREE ,在value值中勾选以允许使用已申请专利的算法,之后再次点击Configure
在这里插入图片描述
        出现Configuring done后点击Generate
在这里插入图片描述
在这里插入图片描述

        等待出现Generating done

Visual Studio 编译

点击 Open Project
在这里插入图片描述
        选择 生成->批生成
在这里插入图片描述
        勾选ALL_BUILD和INSTALL的Debug和Release配置,之后点击生成
在这里插入图片描述
        等待编译完成,最终生成的文件不小:
在这里插入图片描述
此后该文件夹也可移动到别的地方

配置新项目的环境

新建要用的项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置项目的属性
在这里插入图片描述
配置选为所有配置,平台为之前所选的平台

添加包含目录

VC++目录->包含目录

在这里插入图片描述
添加输出文件夹下install\include文件夹及其子文件夹的路径

在这里插入图片描述

添加库目录

VC++目录->库目录
在这里插入图片描述
其路径为输出文件夹下/install/x64/vc14/lib文件夹的路径

在这里插入图片描述
点击应用
在这里插入图片描述

配置调试环境

调试->环境
在这里插入图片描述
添加
PATH=D:\Work\OpenCV\opencv-3.4.12_build\install\x64\vc14\bin;%PATH%
路径为输出文件夹下\install\x64\vc14\bin文件夹的路径
在这里插入图片描述
点击应用

在这里插入图片描述

添加依赖项

分别配置Debug、Release下的 链接器->输入->附加依赖项
在这里插入图片描述
加入lib文件夹下的以".lib"结尾的库文件名
其中以"d.dll"结尾的为Debug时需要的库
不带’d’的则为Release时需要的库
在这里插入图片描述

这些文件名可用如下python脚本提取,filePath为lib文件夹的路径

import os
filePath = r'D:\Work\OpenCV\opencv-3.4.12_build\install\x64\vc14\lib'DebugLibList = []
ReleaseLibList = []for _ in os.listdir(filePath):if _.endswith('d.lib'):DebugLibList.append(_)elif _.endswith('.lib'):ReleaseLibList.append(_)print("DebugLibList:\n")
for _ in DebugLibList:print(_)print("\nReleaseLibList:\n")
for _ in ReleaseLibList:print(_)

在这里插入图片描述
在本例中
Debug的库为

opencv_aruco3412d.lib
opencv_bgsegm3412d.lib
opencv_bioinspired3412d.lib
opencv_calib3d3412d.lib
opencv_ccalib3412d.lib
opencv_core3412d.lib
opencv_datasets3412d.lib
opencv_dnn3412d.lib
opencv_dnn_objdetect3412d.lib
opencv_dpm3412d.lib
opencv_face3412d.lib
opencv_features2d3412d.lib
opencv_flann3412d.lib
opencv_fuzzy3412d.lib
opencv_hdf3412d.lib
opencv_hfs3412d.lib
opencv_highgui3412d.lib
opencv_imgcodecs3412d.lib
opencv_imgproc3412d.lib
opencv_img_hash3412d.lib
opencv_line_descriptor3412d.lib
opencv_ml3412d.lib
opencv_objdetect3412d.lib
opencv_optflow3412d.lib
opencv_phase_unwrapping3412d.lib
opencv_photo3412d.lib
opencv_plot3412d.lib
opencv_reg3412d.lib
opencv_rgbd3412d.lib
opencv_saliency3412d.lib
opencv_shape3412d.lib
opencv_stereo3412d.lib
opencv_stitching3412d.lib
opencv_structured_light3412d.lib
opencv_superres3412d.lib
opencv_surface_matching3412d.lib
opencv_text3412d.lib
opencv_tracking3412d.lib
opencv_video3412d.lib
opencv_videoio3412d.lib
opencv_videostab3412d.lib
opencv_xfeatures2d3412d.lib
opencv_ximgproc3412d.lib
opencv_xobjdetect3412d.lib
opencv_xphoto3412d.lib

Release的库为

opencv_aruco3412.lib
opencv_bgsegm3412.lib
opencv_bioinspired3412.lib
opencv_calib3d3412.lib
opencv_ccalib3412.lib
opencv_core3412.lib
opencv_datasets3412.lib
opencv_dnn3412.lib
opencv_dnn_objdetect3412.lib
opencv_dpm3412.lib
opencv_face3412.lib
opencv_features2d3412.lib
opencv_flann3412.lib
opencv_fuzzy3412.lib
opencv_hdf3412.lib
opencv_hfs3412.lib
opencv_highgui3412.lib
opencv_imgcodecs3412.lib
opencv_imgproc3412.lib
opencv_img_hash3412.lib
opencv_line_descriptor3412.lib
opencv_ml3412.lib
opencv_objdetect3412.lib
opencv_optflow3412.lib
opencv_phase_unwrapping3412.lib
opencv_photo3412.lib
opencv_plot3412.lib
opencv_reg3412.lib
opencv_rgbd3412.lib
opencv_saliency3412.lib
opencv_shape3412.lib
opencv_stereo3412.lib
opencv_stitching3412.lib
opencv_structured_light3412.lib
opencv_superres3412.lib
opencv_surface_matching3412.lib
opencv_text3412.lib
opencv_tracking3412.lib
opencv_video3412.lib
opencv_videoio3412.lib
opencv_videostab3412.lib
opencv_xfeatures2d3412.lib
opencv_ximgproc3412.lib
opencv_xobjdetect3412.lib
opencv_xphoto3412.lib

在这里插入图片描述
在这里插入图片描述

测试

来自Opencv3.1.0+opencv_contrib配置及使用SIFT测试 —— 陈纪建

opencv 3中SIFT匹配是在opencv_contrib库中的,这里我们就用它来做一个简单的测试。
在这里插入图片描述
在这里插入图片描述

#include <iostream>
#include <opencv2/opencv.hpp>  //头文件
#include <opencv2/xfeatures2d.hpp>using namespace cv;  //包含cv命名空间
using namespace std;
using namespace xfeatures2d;int main()
{//Create SIFT class pointerPtr<Feature2D> f2d = SIFT::create();//读入图片Mat img_1 = imread("D:/Work/OpenCV/Workplace/Robot/Robot/1.jpg");Mat img_2 = imread("D:/Work/OpenCV/Workplace/Robot/Robot/2.jpg");//Detect the keypointsvector<KeyPoint> keypoints_1, keypoints_2;f2d->detect(img_1, keypoints_1);f2d->detect(img_2, keypoints_2);//Calculate descriptors (feature vectors)Mat descriptors_1, descriptors_2;f2d->compute(img_1, keypoints_1, descriptors_1);f2d->compute(img_2, keypoints_2, descriptors_2);//Matching descriptor vector using BFMatcherBFMatcher matcher;vector<DMatch> matches;matcher.match(descriptors_1, descriptors_2, matches);//绘制匹配出的关键点Mat img_matches;drawMatches(img_1, keypoints_1, img_2, keypoints_2, matches, img_matches);imshow("match图", img_matches);//等待任意按键按下waitKey(0);
}

测试结果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400409.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows Server 2012 R2 或 2016 无法安装 .Net 3.5.1

租用阿里云ECS服务器的用户使用 Windows Server 2012 R2 或 Windows Server 2016 64位系统&#xff0c;发现在安装 .net framework 3.5.1 时报错&#xff0c;报错内容如下&#xff1a; 原因分析 找不到安装源文件。 解决办法 可以通过如下 PowerShell 脚本进行安装&#xff1a;…

Concept3D推出交互式3D地图平台

对于活动组织者而言&#xff0c;能够在不必实际旅行的情况下参观活动地点的想法非常具有吸引力&#xff0c;特别是对于日程安排繁忙的人员。Concept3D通过其交互式地图和身临其境的虚拟导览软件实现了这一点。 Concept3D平台的首要位置之一是棕榈泉会议中心&#xff0c;该中心支…

【机器视觉学习笔记】OpenCV C++ 调用笔记本摄像头

目录测试程序实验现象平台&#xff1a;Windows 10 20H2 Visual Studio 2015 opencv_contrib-3.4.12 转自【opencv七】利用opencv调用电脑摄像头 —— yuanCruise 测试程序 #include <opencv2/opencv.hpp> #include <iostream>using namespace cv;int main() {n…

深入分析 Java 中的中文编码问题

几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题&#xff0c;那就是为什么要编码&#xff1f;我们能不能不编码&#xff1f;要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的&#xff0c;这些符号也就是我们人类使用的语言。由于人类的语言有…

APP图标生成工具

今天25学堂跟大家推荐一款非常有趣和简单的APP图标生成工具&#xff1a;Iconion Icon Generator&#xff08;iconion图标生成器&#xff09; 我们可以用它来创建美丽的扁平化图标&#xff0c;长投影图标&#xff0c;桌面图标&#xff0c;社会媒体图标和移动APP图标等&#xff0…

基本形态学算法

基本形态学算法为什么要做基本形态学算法的研究和实现&#xff1f;是因为形态学是一个非常有力&#xff0c;应用 广泛的工具&#xff0c;但同时也是研究不是很清楚的工具。往往一个恰到好处的变换&#xff0c;就能够省下许多的劳动。对此的分类和研究就显得非常有必要&#xff…

【51单片机快速入门指南】4.4:I2C 读取HMC5883L / QMC5883L 磁力计

目录硬知识简介操作模式HMC5883L连续测量模式单次测量模式闲置模式QMC5883L连续测量模式待命模式主要差异寄存器寄存器列表HMC5883LQMC5883L配置寄存器HMC5883L配置寄存器 A配置寄存器 B模式寄存器QMC5883L控制寄存器1控制寄存器2SET/RESET Period Register数据输出寄存器HMC58…

leaflet加载离线OSM(OpenStreetMap)

转载&#xff1a; https://www.cnblogs.com/RainyBear/p/6011832.html leaflet作为广为应用的开源地图操作的API,是非常受欢迎&#xff0c;轻量级的代码让使用者更容易操作。 废话不多说&#xff0c;下面直接给出范例。 首先在这个网站下载leaflet的压缩包&#xff0c;其中包括…

Nginx 实战(一) 集群环境搭建

Nginx是什么&#xff1f; Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器&#xff0c;也是一个 IMAP/POP3/SMTP 代理服务器。一直纳闷这个X是怎么来的在网上查了查原来X代表很牛逼的样子&#xff0c;Nginx就是代表一个非常牛逼的引擎服务器系统&#xf…

【51单片机快速入门指南】4.4.1:python串口接收磁力计数据并进行最小二乘法椭球拟合

目录硬知识Python代码使用方法串口收集数据椭球拟合验证STC15F2K60S2 16.384MHz Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 Python 3.8.11 (default, Aug 6 2021, 09:57:55) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32 参考资料&…

MATLAB之基本语法之常用命令

1. whos&#xff08;或者who&#xff09; 可以查看command window的变量 当调试MATLAB程序时&#xff0c;该条命令经常用到&#xff01;&#xff01;&#xff01; 2. clc 清除命令窗口内容但是不清除变量 3. clear 清除命令窗口内容并且清除变量 4. …

【51单片机快速入门指南】4.4.2:Mahony AHRS 九轴姿态融合获取四元数、欧拉角

目录传感器的方向源码Mahony_9.cMahony_9.h使用方法测试main.c效果STC15F2K60S2 22.1184MHz Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 上位机&#xff1a;Vofa 1.3.10 移植自MPU6050 获取角度理论推导(三)—9轴融合算法 —— shao15232_1 传感器…

BZOJ 2160 拉拉队排练

2160: 拉拉队排练 Description 艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了。拉拉队是篮球比赛的一个看点&#xff0c;好的拉拉队往往能帮助球队增加士气&#xff0c;赢得最终的比赛。所以作为拉拉队队长的楚雨荨同学知道&#xff0c;帮助篮球队训练好拉拉队有多么的重要…

React Native获取设备信息组件

转载 https://www.jianshu.com/p/907b003835dc本文原创首发于公众号&#xff1a;ReactNative开发圈&#xff0c;转载需注明出处。这次介绍的获取移动设备信息的组件名叫&#xff1a;react-native-device-info&#xff0c;兼容IOS和安卓双平台&#xff0c;可以获取设备ID、设备品…

UNIX网络编程——套接字选项(SO_RCVBUF和SO_SNDBUF)

有时候我们需要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要学习套接字选项。int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen) int setsockopt(int sockfd,int level,int optname,const void *optval,socklen_t *optlen)level指定…

【51单片机快速入门指南】4.4.3:Madgwick AHRS 九轴姿态融合获取四元数、欧拉角

目录传感器的方向源码Madgwick_9.cMadgwick_9.h使用方法测试main.c效果STC15F2K60S2 22.1184MHz Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 上位机&#xff1a;Vofa 1.3.10 移植自AHRS —— LOXO&#xff0c;算法作者&#xff1a;SOH Madgwick 传…

关于json格式字符串解析并用mybatis存入数据库

园子里面找了很多关于json解析后存入数据库的方法&#xff0c;不是太乱&#xff0c;就是没有写完&#xff0c;我下面的主题代码多是受下面两位的启发&#xff0c;请按顺序查看 http://www.cnblogs.com/tian830937/p/6364622.html,我沿用了这个例子中的json数据格式&#xff0c;…

【Hibernate3.3复习知识点二】 - 配置hibernate环境(annotations)

配置文件hibernate.cfg.xml中引入&#xff1a;<mapping class"com.bjsxt.hibernate.Teacher"/> <hibernate-configuration><session-factory><!-- Database connection settings --><property name"connection.driver_class"&g…

【51单片机快速入门指南】4.5:I2C 与 TCA6416实现双向 IO 扩展

目录硬知识IO 扩展芯片 TCA6416ATAC6416A 的寄存器IO 输入寄存器IO 输出寄存器IO 反相寄存器IO 方向寄存器TCA6416A 的操作TCA6416A 写数据TCA6416A 读数据TCA6416A 的 IO 输入寄存器硬件布局示例程序TCA6416A.cTCA6416A.h测试程序main.c实验现象普中51-单核-A2 STC89C52 MSP43…

linux/window 下 solr5.1 tomcat7.x 环境搭建即简单功能测试

2019独角兽企业重金招聘Python工程师标准>>> 之所以想使用solr来进行学习&#xff0c;很大一部分原因就是&#xff0c;solr能够在某种程度上提供RESTFUL相关的URL请求连接&#xff0c;可以把它理解为 以搜索引擎为基础的存储服务系统 &#xff0c;由于他的搜索可以是…