本文笔记记录时间过长,但是查看了数偏博客才成功安装,如若侵权,请联系我。
# 软件源更新
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
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工具下载到用户目录下(源码要放在有执行权限的位置,不是安装位置)
使用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
到这里,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