树莓派3b+安装OpenCV环境

本文笔记记录时间过长,但是查看了数偏博客才成功安装,如若侵权,请联系我。


1. 安装OpenCV 3.3.1

# 软件源更新

sudo apt-get update

# 升级本地所有安装包,最新系统可以不升级,版本过高反而需要降级才能安装

sudo apt-get upgrade

# 升级树莓派固件,固件比较新或者是Ubuntu则不用执行

sudo rpi-update

 

# -----------安装构建OpenCV的相关工具--------------#

# 安装基本的依赖项:

 sudo apt-get install build-essential git cmake pkg-config -y

# 安装和图像相关的库:

sudo apt-get install libjpeg8-dev -y

sudo apt-get install libtiff5-dev -y

sudo apt-get install libjasper-dev -y

sudo apt-get install libpng12-dev -y

# 安装视频IO包:

sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libv4l-0 libv4l-dev libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -y

# 安装gtk2.0相关的依赖库:

sudo apt-get install libgtk2.0-dev -y

# 安装opencv进阶依赖库,操作矩阵(优化函数包)等:

sudo apt-get install libatlas-base-dev gfortran -y

# 其它一些库

sudo apt-get install -y python-numpy python-scipy python-matplotlib ant libgtkglext1-dev v4l-utils

2. python环境搭建

sudo apt-get install python2.7-dev python3-dev

使用python版本为:

python2.7.9

python3.4.2

pip安装

wget https://bootstrap.pypa.io/get-pip.py

sudo python get-pip.py

数字处理

pip install numpy

# 安装比较漫长,若报没有权限的错误,执行sudo rm -rf ~/.cache/pip/

 

# -----------此处为沙盒环境,可选择安装--------------#(建议不安装)

下载

pip wget https://bootstrap.pypa.io/get-pip.py 

安装pip工具

sudo python get-pip.py

安装virtualenv沙盒工具

sudo pip install virtualenv virtualenvwrapper sudo rm -rf ~/.cache/pip

将沙盒环境变量写入~/.profile

echo -e "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7 \n export WORKON_HOME=$HOME/.virtualenvs \n source /usr/local/bin/virtualenvwrapper.sh \n export LD_LIBRARY_PATH=/usr/lib/:$LD_LIBRARY_PATH" >> ~/.profile

更新状态

source ~/.profile

创建沙盒环境

mkvirtualenv p2cv

workon p2cv

这时可以看到已经进入沙盒环境(p2cv)pi@raspberrypi

如果想离开沙盒环境,执行deactivate

# -----------------沙盒环境安装结束---------------#

 

执行到这里就把OpenCV的依赖包全部安装好了,之后要开始编译OpenCV源代码了,请大家用wget工具下载到用户目录下(源码要放在有执行权限的位置,不是安装位置)

 

3. 编译和安装OpenCV3.4.1

使用wget下载OpenCV源码,觉得慢的话可以到https://github.com/opencv/opencv/releases下载OpenCV的源代码tar.gz格式,需要解压好,放到用户目录下

但是OpenCV_contrib请大家使用wget,亲测直接到Github下载zip文件的话,会有编译问题

下载OpenCV wget -O opencv-3.4.1.zip https://github.com/Itseez/opencv/archive/3.4.1.zip

解压OpenCV unzip opencv-3.4.1.zip

下载OpenCV_contrib库: wget -O opencv_contrib-3.4.1.zip https://github.com/Itseez/opencv_contrib/archive/3.4.1.zip

解压OpenCV_contrib库: unzip opencv_contrib-3.4.1.zip

找到你下载的源码文件夹并打开,tar.gz解压后文件夹名应该是opencv-3.4.1(版本号可能# 会变化),git方式下载的文件夹名应该是opencv。

进入opencv3.4.1目录:

cd opencv-3.4.1/

之后我们新建一个名为release的文件夹用来存放cmake编译时产生的临时文件:

新建release文件夹

mkdir release

进入release文件夹

cd release

设置cmake编译参数,安装目录默认为/usr/local

设置cmake编译参数,安装目录默认为/usr/local ,注意参数名、等号和参数值之间不能有空格,但每行末尾“\”之前有空格,参数值最后是两个英文的点:

/** CMAKE_BUILD_TYPE是编译方式 * CMAKE_INSTALL_PREFIX是安装目录 * OPENCV_EXTRA_MODULES_PATH是加载额外模块 * INSTALL_PYTHON_EXAMPLES是安装官方python例程 * BUILD_EXAMPLES是编译例程(这两个可以不加,不加编译稍微快一点点,想要C语言的例程的话,在最后一行前加参数INSTALL_C_EXAMPLES=ON \)

**/

# 配置cmake(这一步直接粘贴所有行到你的terminal即可):
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \

-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.1/modules \

-D INSTALL_PYTHON_EXAMPLES=ON \

-D BUILD_EXAMPLES=ON ..

正式编译过程

之后开始正式编译过程(如果之前一步因为网络问题导致cmake下载缺失文件失败的话,可以尝试使用手机热点,并将release文件夹删除掉,重新创建release文件夹并cmake):

// 编译,以管理员身份,否则容易出错

sudo make (编译时间3.5小时左右)

// 安装

sudo make install

// 更新动态链接库

sudo ldconfig

2.测试OpenCV

到这里,OpenCV的编译完成,已经可以正常使用了,下面我提供一个Python语言的测试程序,用来测试OpenCV是否正常:

import cv2

import numpy as np

cv2.namedWindow("gray")

img = np.zeros((512,512),np.uint8)#生成一张空的灰度图像

cv2.line(img,(0,0),(511,511),255,5)#绘制一条白色直线

cv2.imshow("gray",img)#显示图像

#循环等待,按q键退出

while True:

       key=cv2.waitKey(1)

       if key==ord("q"):

              break

cv2.destoryWindow("gray")

// 打开python命令状态

python

>>> import cv2

>>> print cv2.__version__

the following line should appear then:

'3.3.1'

// 完成安装!

# -*- coding: utf-8 -*-

__author__ = "kyoRan"

import cv2

cap = cv2.VideoCapture(0) # 打开摄像头

print("VideoCapture is opened?", cap.isOpened())

while(True):

ret, frame = cap.read() # 读取摄像头图像

center = (frame.shape[1]//2, frame.shape[0]//2) # 图像中心点位置

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 转灰度

cv2.circle(gray, center=center, radius=100, color=(0,0,255)) # 画圆 cv2.imshow("frame", gray) # 显示图片

if cv2.waitKey(1) & 0xFF == ord('q'):

break

cap.release() # 释放摄像头

cv2.destroyAllWindows() # 关闭所有窗口

终端输入以下命令验证opencv是否安装成功

python -c "import cv2;print dir(cv2)"

输出了很多cv2的属性和函数名的字典

 

 

附:

1、解决无法打开摄像头硬件问题

第一种

sudo nano /etc/modules

// 进入编辑界面后,在末尾添加输入

snd-bcm2835

bcm2835-v4l2

第二种

// 编辑模块管理配置文件
sudo vim /etc/modules-load
.d
/modules
.conf
 
// 尾部添加一行 bcm2835-v4l2

2、安装完成后

然后删掉安装包:

rm -rf opencv-3.1.0 opencv_contrib-3.1.0

3.开启树莓派摄像头

sudo raspi-config

// 选择 5 Interfacing Options

// 将Camera 设置为 Enable

// 拍取一张照片

raspistill -o photo.jpg

// 可在当前位置看到photo.jpg文件则为正常!

4、出错解决方法   

HIGHGUI ERROR: V4L/V4L2: VIDIOCSCROP

    1.安装 依赖库

    sudo apt-get install libv4l-dev

    sudo apt-get install v4l2ucp

    sudo apt-get install v4l-utils

    2.重新编译OPENCV

    cd build

    cmake ..

    make

sudo make install

暂时不知:

# 安装python插件

# sudo apt-get install -y python-picamera python-pil python-tk

# 为沙盒环境引用类库

cd ~/.virtualenvs/p2cv/lib/python2.7/site-packages/ ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so  

 

你可能感兴趣的:(树莓派3b+安装OpenCV环境)