【机器视觉学习笔记】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;…

PHP CURL 多线程 GET/POST 类

PHP CURL 多线程 GET/POST 类 2015-01-01 分类&#xff1a;技术文章 阅读(623) 评论(0)如果有需要更正或更高效的建议&#xff0c;欢迎在OSchina分享~\(≧▽≦)/~ http://www.oschina.net/code/snippet_1475115_44902 <?php /********************************************…

C#中打开设计视图时报未将对象引用设置到对象的实例

通常情况下&#xff0c;若是你将用户控件写好了放入窗体中&#xff0c;若是有不合理的代码&#xff0c;则会弹出错误提示框&#xff0c;不让你放。若是你之前只是随便加了一个用户控件&#xff0c;并且没有什么问题&#xff0c;但后来你又把控件改坏掉了&#xff0c;那么你打开…

C#线程调用带参数的方法,给控件赋值

System.Threading.Thread thread new System.Threading.Thread(() > { //各种业务 //定义一个委托 public delegate void ProcessDelegate(string a); if (this.lbStatus.InvokeRequired) { ProcessDelegate df new ProcessDelegate(AddStatus); this.Invoke(df, new obj…

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…

linux文件分割(将大的日志文件分割成小的)

linux下文件分割可以通过split命令来实现&#xff0c;可以指定按行数分割和安大小分割两种模式。Linux下文件合并可以通过cat命令来实现&#xff0c;非常简单。 在Linux下用split进行文件分割&#xff1a; 模式一&#xff1a;指定分割后文件行数 对与txt文本文件&#xff0c;可…

深入分析 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. …

手动构建磁贴服务器(16.04.2 LTS)

转载&#xff1a; https://switch2osm.org/manually-building-a-tile-server-16-04-2-lts/本页介绍如何安装&#xff0c;设置和配置操作您自己的磁贴服务器所需的所有软件。逐步说明是为Ubuntu Linux16.04.2 LTS&#xff08;Xenial Xerus&#xff09;编写的。 软件安装 OSM切片…

C[泊车管理系统]

// // main.c // 泊车管理系统 // // Created by 丁小未 on 13-7-14. // Copyright (c) 2013年 dingxiaowei. All rights reserved. // //题目&#xff1a;泊车管理系统 //&#xff08;1&#xff09;管理人员根据口令进入系统 //&#xff08;2&#xff09;管理车位信息&…

使用.netFx4.0提供的方法解决32位程序访问64位系统的64位注册表

原文:使用.netFx4.0提供的方法解决32位程序访问64位系统的64位注册表我们知道目标平台是32位的程序运行在64位的系统上&#xff0c;去访问部分注册表的时候系统自动重定向到win32node节点对应的项去了。但是做过安装程序开发人员可能遇到过“需要去掉重定向”的问题&#xff0c…

【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;帮助篮球队训练好拉拉队有多么的重要…