准备工作:给树莓派4b烧录进去操作系统,我使用的是2019-7-10代号buster的版本,该版本已经自带了python2.7和python3.7,首先要把2.7的去掉,把3.7的设置为默认版本,这点请百度如何切换树莓派自带的python版本!!!要求在命令行输入python就能输出3.7的版本信息。
下面我们来进行环境安装,网上这方面信息很多,好使的根本就不多,这些坑我会指
出
方法1:使用pi这个默认账户安装:
我个人是在操作系统TF卡的根目录放了一个名为ssh的空文件(无后缀),这样能开启ssh功能,然后输入命令:
sudo apt-get install tightvncserver xrdp
之后就可以用win10自带的远程连接了
下面是重点:
首先依次执行下列命令:
sudo apt-get install libjpeg-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libjpeg-dev
sudo apt-get install libtiff5-dev
sudo apt-get install libpng12-dev
sudo apt-get install libqtgui4 libqt4-test
sudo apt-get install libjasper-dev
然后执行:
sudo pip3 install opencv-python
然后你可能会发现安装到一半出现了这种问题:
pip安装报错,do not match the hashes
那么你应该这样做:
pip install --upgrade opencv-python
然后等待安装完成
安装完成之后你可能会想要知道安装是否成功,我的方法就是用pycharm 通过ssh远程连接树莓派的编译器,方法请百度,我这里只说按照我上述安装操作多半会遇到的奇怪的问题:
比如我写了一段代码:
import cv2 as cv
o = cv.imread("/home/pi/Desktop/testimg/lena.png",cv.IMREAD_UNCHANGED)
cv.imshow("origin",o)
cv.waitKey(0)
cv.destroyAllWindows()
然后使用树莓派的编译器,结果给我报错:
ImportError: /home/pi/.local/lib/python3.7/site-packages/cv2/cv2.cpython-37m-arm-linux-gnueabihf.so: undefined symbol: __atomic_fetch_add_8
遇到这种情况你应该这样做:
远程连接你的树莓派,但不要用pi这个账户,而是使用root账户(如何开启root账户请百度,仅需几行命令),然后ssh远程连接使用root账户:
然后找到两个文件:
然后用text editor打开,在两个文件最后加上
export LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1
并保存,然后执行下列命令:
source .bashrc
如果遇到权限问题就对两个文件右键单击属性:按下图修改(这也是为什么要用root账户,因为要改权限)
然后回到pycharm添加一个环境变量:
然后再去执行import cv2 as cv就不会出现undefined symbol: __atomic_fetch_add_8的问题了,这个时候请你试一下cv.imshow函数,很大概率你会发现又报错了:
或者是报错:类似于无法连接到cannot connect to X server之类的,这种就是缺少了一种权限导致我们无法远程操控树莓派去执行这种带有GUI的图形任务
解决办法为:
先查看自己电脑的IPV4地址,然后执行下列指令(注意改为自己的IP)
xhost +192.168.0.106
然后执行
echo $DISPLAY
请记住这个10.0,我们回到pycharm,再添加一个环境变量
再去执行代码:
import cv2 as cv
o = cv.imread("/home/pi/Desktop/testimg/lena.png",cv.IMREAD_UNCHANGED)
cv.imshow("origin",o)
cv.waitKey(0)
cv.destroyAllWindows()
结果为:
树莓派一端自动出现了窗口:
自此,环境的安装以及用自己的电脑写代码但是通过ssh让树莓派去执行的全部配置就OK了
方法2:无脑安装(比方法1好使的多)
请执行:sudo apt-get install python3-opencv
然后安装方法1中的去配置pycham的DISPLAY环境变量就OK了:
然后就没了。请注意:不要更换系统源,不要更换系统源,不要更换系统源
树莓派4b的新版的系统自己会自动去选择源,安装速度也是很快的。如果是pip的源的话可以自己换,但是换了之后pip的源之后安装比如opencv-python这样的模块的时候基本都要下载完自动安装的时候出错
最后再说一点:如果执行cv.imshow(“origin”,o)这种要有GUI显示的代码就一定要先在树莓派登陆账户,要不然都没启动图形界面你咋绘图呢,就算能你不也看不着吗