树莓派3B+ 安装opencv3.4.2

 OpenCV简介:

opencv是一个开源的计算机视觉库,是英特尔公司资助的两大图像处理利器之一。它为图像处理、模式识别、三维重建、物体跟踪、机器学习和线性代数提供了各种各样的算法

安装完成后的演示:

树莓派3B+编译安装opencv3还是挺难的,主要没有靠谱的教程,因为执行过程中各种出错,要么缺少依赖,要么编译时候出错,最后用单核camake,花了2个小时20分钟,据说4核编译会更快,但是单核编译时温度就高达了60度上下了,我想幸亏没用4核编译,除非把它拿到空调下面,否则一定会烧坏了,我目前还是加了散热片和风扇的,总之慎用4核编译。

cv2安装成功后截图.png

终端输入

python3

导入cv2库

import cv2

查看cv2版本

cv2.__version__

长横是两个英文输入法下面的下划线

Ctrl+D退出

命令行查看版本

pi@raspberrypi:~ $ opencv_version 

3.4.2

树莓派自带有旧的opencv 2.4.9 只支持python2的,安装方法如下

sudo apt-get install libopencv-dev

sudo apt-get install python-opencv -y

这样基于python2的opencv2就安装好了。

下面是安装基于python3的opencv3的方法,采用编译安装。先安装开发环境,集成环境,再去Github下载opencv3.4.2最新的版本,接着进行编译安装。


前期准备,下载opencv源码包

进入OpenCV官方下载页面https://opencv.org/releases.html
选择Sources类型 下载(这里以Opencv3.4.2为例)

opencv_contrib-3.4.2.tar.gz

opencv-3.4.2.tar.gz

下载好了用winSCP上传到pi用户的家目录方便进行操作


1    安装依赖包

sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev  

2    编译 opencv

解压之前下载好的源码包```tar zxvf Opencv压缩包名称.tar.gz 想要解压的路径```

解压缩

pi@raspberrypi:~ $ pwd

/home/pi

tar -xvf opencv-3.4.2.tar.gz 

tar -xvf opencv_contrib-3.4.2.tar.gz

新建目录opencv,将opencv3.4.2目录和opencv_contrib-3.4.2都放到这个目录下方便以后使用

mkdir opencv

cp -R opencv-3.4.2 opencv/opencv3

cp -R opencv_contrib-3.4.2 opencv/opencv_contrib

**进入OpenCV源码目录**
cd opencv/opencv3
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make
sudo make install
所涉及的命令具体含义自行学习**CMake**的基本操作

cmake过程单核很漫长,我用了2小时20分钟,据说4很快,但是有报错和烧坏CPU的风险,所以没试

3    添加路径

配置一些OpenCV的编译环境首先将OpenCV的库添加到路径,从而可以让系统找到

sudo nano /etc/ld.so.conf.d/opencv.conf
执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件中添加
/usr/local/lib 
执行如下命令使得刚才的配置路径生效
sudo ldconfig 
配置bash
sudo nano /etc/bash.bashrc 
在最末尾添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig 
export PKG_CONFIG_PATH 
保存,执行如下命令使得配置生效
source /etc/bash.bashrc 
更新
sudo updatedb  


4    测试


至此所有的配置都已经完成
下面用一个小程序测试一下
cd到/home/pi/opencv/opencv3/smaples/cpp/example_cmake目录下
我们可以看到这个目录里官方已经给出了一个cmake的example我们可以拿来测试下
按顺序执行
cmake .
make
./opencv_example
即可看到打开了摄像头,在左上角有一个hello opencv
即表示配置成功

pi@raspberrypi:~ $ opencv_version 

3.4.2

opencv镜头图_眸目压缩.jpg

5    问题


### error0:
在编译过程中会涉及到ippicv的下载,有时候下载很慢或者下载不能成功,解决方案有两种:
1.开启 科学上网
2.可以先单独下载ippicv_linux_20151201.tgz之后,把其移动到终端所提示的路径(终端会提示该路径找不到文件
移动的时候,可以另外打开一个终端操作
下载地址```https://github.com/opencv/opencv_3rdparty/branches/all```(版本视终端提示而定)
### error1:
lib/libopencv_videoio.so.3.1.0: undefined reference to `gst_app_sink_pull_sample'
collect2: error: ld returned 1 exit status
modules/video/CMakeFiles/opencv_test_video.dir/build.make:388: recipe for target 'bin/opencv_test_video' failed
**solution:**
找到"OpenCVCompilerOptions.cmake"文件add_extra_compiler_option(-Werror=non-virtual-dtor)
一行添加 #http://stackoverflow.com/questions/27828740/opencv-3-0-videoio-error
### error2:
GstMiniObjectClass’ does not name a type
**solution2:**
```sudo apt-get install libgstreamer1.0-dev  libgstreamer-plugins-base1.0-dev  ```


最后编辑于:2018/08/04作者: admin

发表评论