opencv-3.4.1-x86编译安装 -- 超详细
相关链接:
opencv-3.4.1-arm编译安装 – 超详细
opencv-3.4.1-x86编译安装
- 环境
- 1.安装依赖库
- 2.OpenCV源码获取与解压
- 2.1 获取源码
- 2.2 工作目录准备
- 2.3 解压
- 3.OpenCV配置编译
- 3.1 cmake-gui配置
- ==3.2 cmake-gui可能会遇到的问题==
- 3.2.1 `问题1`
- 3.3 编译安装make /make install
- ==3.4 make时可能遇到的问题==
- 3.4.1 `问题2`:
- 3.4.2 `问题3`:
- 4. 配置环境
- 5. 代码测试
- 5.1 写测试代码
- 5.2 编译
- 5.3 虚拟机连接笔记本摄像头
- 5.4 运行test
环境
ubuntu:16.04
gcc:5.4.0
opencv源码:opencv-3.4.1
opencv扩展包:opencv-3.4.1_contrib-3.4.1
cmake+cmake-gui
1.安装依赖库
安装编译工具
#apt-get install build-essential
安装依赖包
#apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
#apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libtiff-dev libjasper-dev libdc1394-22-dev
2.OpenCV源码获取与解压
2.1 获取源码
官网处获取源码:速度比较慢,没梯可能不好办。
选择对应版本,下载下来
也可以下载我下载好的,5积分(放的时候是5):
2.2 工作目录准备
#mkdir /opt/wkspace/opencv
#cd /opt/wkspace/opencv
#cp ?/opencv-3.4.1zip .
#cp ?/opencv_contrib-3.4.1.zip .
2.3 解压
# unzip opencv-3.4.1.zip
# unzip opencv_contrib-3.4.1.zi
# cd opencv-3.4.1
# mkdir build
# cd build
3.OpenCV配置编译
3.1 cmake-gui配置
# cd /opt/wkspace/opencv/opencv-3.4.1/build
# cmake-gui ..
使用默认编译器
搜索 CMAKE_BUILD_TYPE=Release CMAKE_INSTALL_PREFIX=/usr/local OPENCV_EXTRA_MODULES_PATH=/opt/wkspace/opencv/opencv_contrib-3.4.1/modules
勾选 jpeg和png库
点击configure,结束后点generate
3.2 cmake-gui可能会遇到的问题
3.2.1 问题1
到tiny-dnn:Download: v1.0.0a3.tar.gz 处停止
原因:无法连接到该网络,下载这个包
解决方法:
1)下载tiny-dnn-1.0.0a3.tar.gz
csdn上找的一个包
2)通过samba放到共享目录/share,并重命名:
3)配置${opencv_contrib_folder}/modules/dnn_modern/CMakeLists.txt,第23行
改成:
重新cmake解决问题;
3.3 编译安装make /make install
3.4 make时可能遇到的问题
3.4.1 问题2
:
/opt/wkspace/opencv/opencv_contrib-3.4.1/modules/xfeatures2d/src/vgg.cpp:490:41 fatal error: vgg_generated_120.i: No such file or directory
还有很多类似的xxx.i,都是同个问题
原因:同样是无法连接到该网络,下载这个包
解决方法:
下载文件后缀该为.tar.gz解压后为:
移动到
重新make解决
3.4.2 问题3
:
/opt/wkspace/opencv/opencv-3.4.1/modules/stitching/include/opencv2/stitching/detail/matchers.hpp:52:42: fatal error: opencv2/xfeatures2d/cuda.hpp: No such file or directory
同样也有一些类似的找不到头文件问题,都同个解决方法
原因:扩展包的include没在gcc编译这个文件时的头文件路径上
解决方法:将对应文件的include处更改为绝对路径
改为:
重新make解决
4. 配置环境
将opencv库加入到系统路径中,从而让系统可以找到
#vim /etc/ld.so.conf/opencv.conf
可能没有该文件,直接创建就行
在末尾处加入
/usr/local/lib
更新ld
#ldconfig
# vim /etc/bash.bashrc
在末尾处添加
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
执行:
#source /etc/bash.bashrc
更新:
#updatedb
5. 代码测试
5.1 写测试代码
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main() {VideoCapture cap(0);Mat frame;while (1) {cap >> frame;imshow("内置摄像头", frame);if (waitKey(30) == 27)break;}return 0;
}
打开摄像头循环获取图像。
5.2 编译
# g++ test.cpp -o test `pkg-config --cflags --libs opencv`
5.3 虚拟机连接笔记本摄像头
VM设置中USB2.0改为3.0
如果执行cheese黑屏则改回来,总有一个驱动可以看到图像
连接摄像头
灰色表示连接在主机中
绿灯表示连接到虚拟机但还未工作,
蓝灯表示正在使用
已连接如下:
此时/dev目录下出现video0:
cheese激活摄像头
印象中笔记本内置摄像头好像要用cheese工具来激活,如果不是那也可以当作测试摄像头下,如果没有这个工具则#apt-get install cheese下
连接正常
5.4 运行test
#./test
发布评论