前言
本文教程适合初学者
本文作者在多次安装Open CV环境过程中,对于安装步骤进行了多次迭代,力求萌新都能够看懂。
建议使用Linux学习Open CV
这一系列笔记都是基于Linux系统,为什么不用windows?因为Linux配置环境真的太方便了,安装一个eigen库只需要一行指令,而Windows却要配好久的环境。
因此在这里我也建议大家,如果只是单纯处于学习过程,没有项目的要求,都用Linux系统就好。
本文教程为Windows编写
专门为Windows编写
opencv3 and opencv4
本文讲解的opencv编译步骤适用于3和4.不同的地方会特意予以说明。opencv4处需要特别注意的地方会予以黄色标注。
opencv4需要额外的操作有三处。1处是cmake时选中OPENCV_GENERATE_PKGCONFIG 2处是配置环境变量时多一步骤。3处是最后在命令行运行时g++命令也吧太一样。
文章目录
- 前言
- 一 为什么要编译OpenCV
- 1.2 介绍
- 二 构建步骤
- 2.0 关于准备工作
- 2.1 CMake
- 勾选
- 再点击一次configure
- 代码验证库安装成功
- 参考链接
- 微信公众号
一 为什么要编译OpenCV
因为根据源码构建OpenCV的能力是我们必须要掌握的,除了笔记本上自己安装的Ubuntu系统没有OpenCV之外,我们也有可能在自己的硬件平台上编译。
拿嵌入式平台manifold来说,系统其实自带OpenCV(使用dpkg -l命令可以看到所有已经安装了的库),那么为什么还要自己编译呢?因为manifold虽然安装了CUDA库(利用GPU进行图像处理)。但自带的open cv却没有添加CUDA功能。
(如果以后有人要写CUDA版本的RM程序,记得大幅修改,因为CUDA的open cv里的类是单独的,另一个名字)。因此,我们需要自己编译open cv,DIY能够满足我们要求的OpenCV库。
1.2 介绍
这次我们安装2个库OpenCV3.4.8和OpenCV-contrib3.4.8。
OpenCV分为两个库,一个是OpenCV,放了OpenCV稳定的功能,另一个是OpenCV-contrib,将一些不太稳定的功能放进去了,contrib介绍。比如Tracking()函数,我们以后也会遇到,所以这里干脆一次性安装全乎了。 OpenCV github下载链接 OpenCV-contrib下载地址 在contribute的下载页面,点击tag,有相应的版本号。
这俩链接下载速度贼慢,不过已经比官网快许多了。这一节用到的所有资源大家也可以在公众号后台回复 day1获取。
我在这里下载了OpenCV 3.4.8(3.4.1是企业版应用最稳定的,不过这种稳定我们不一定用得到。所以大家自己选择喜欢的版本即可,步骤大同小异)
Open cv库的安装使用的是cmake。使用cmake-gui这个图形化的工具更加方便。
二 构建步骤
2.0 关于准备工作
CMake过程中,报python2的错误,完全不用管。
如果想下载ffmpeg等库,你需要使用全局的代理,同时,还需要避免dns污染,把正确的ip地址添加到hosts文件中。
解决方案以win10为例子
1:进入 IPAddress.com 网站查询raw.githubusercontent.com真实地址。
185.199.108.133
此处可参考
2:打开C:\Windows\System32\drivers\etc\hosts,(需要使用管理员权限打开)
追加199.232.68.133 raw.githubusercontent.com如下:
左下角 搜索框 搜索 cmd
弹出命令框
输入
ipconfig /displaydns
显示所有 dns内容
ipconfig /flushdns
刷新所有 dns内容
2.1 CMake

CMake Warning at cmake/OpenCVDetectPython.cmake:81 (message):
CMake's 'find_host_package(PythonInterp 2.7)' found wrong Python version:
PYTHON_EXECUTABLE=D:/Programs/anaconda/python.exe
PYTHON_VERSION_STRING=3.8.5
Consider providing the 'PYTHON2_EXECUTABLE' variable via CMake command line
or environment variables
Call Stack (most recent call first):
cmake/OpenCVDetectPython.cmake:271 (find_python)
CMakeLists.txt:611 (include)
有一定作用:
ippicv是英特尔的实时处理软件,加速软件,以后再配置这个加速软件。感觉需要一个东西能够让所有流量都走代理,否则每次安装都这样,太烦人了。
CMake Warning at cmake/OpenCVGenSetupVars.cmake:54 (message):
CONFIGURATION IS NOT SUPPORTED: validate setupvars script in install
directory
Call Stack (most recent call first):
CMakeLists.txt:1012 (include)
脚本验证错误:这是一个warning,不想管了,毕竟已经configure成功了。
检查文件cmake / OpenCVGenSetupVars.cmake
if(DEFINED __python_path)
if(IS_ABSOLUTE "${__python_path}")
set(OPENCV_PYTHON_DIR_RELATIVE_CMAKECONFIG "${__python_path}")
message(WARNING "CONFIGURATION IS NOT SUPPORTED: validate setupvars script in install directory")
3:再次打开cmake如下即可:
勾选
勾选cmake-gui中的
BUILD_opencv_world
选项(使最后只生成一个库),
勾选
OPENCV_ENABLE_NONFREE
支持sift等nonfree的函数
OPENCV_EXTRA_MODULES_PATH选项中填写opencv_contrib-3.4.14源码解压后里面的modules的路径(比如opencv_contrib-3.4.14\modules),
去掉勾选ENABLE_PRECOMPILED_HEADERS,
再点击一次configure
代码验证库安装成功
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char* argv[])
{
Mat src(220,220,CV_8UC3);
namedWindow("CV_8UC3");
imshow("CV_8UC3",src);
waitKey(5000);
return 0;
}
参考链接
微信公众号
欢迎大家关注我的个人公众号,现阶段主要总结Robomaster相关的计算机视觉知识。