树莓派安装python3替换python2_在树莓派上安装基于python3的OpenCV
书接上文Sebastian Zhou:从零开始在树莓派上安装系统(无显示器和网线)zhuanlan.zhihu.com关于树莓派上安装OpenCV的教程也有很多,但似乎都陷入了一个怪圈,一定要在树莓派上编译OpenCV的代码。实际上,python3(而不仅仅是python2)的OpenCV是可以在树莓派直接安装的。
绝大多数在树莓派上安装opencv的教程都时要编译的,安装下来动辄五六个小时还容易出错,“我认为这不cool”(笑)。我综合了几个不需要编译安装的中文资料和Google了相关内容之后,总结了相对简单的方法。
一. 换源
因为树莓派的默认源在国外,所以我们在更新系统的时候时出奇的慢,所以我们就要把相应的源换到国内,国内相对出名的源有清华源,科大源,豆瓣源等,我用的是清华源(不用科大源是因为有一次缺少依赖找不到,换成清华源就ok)
打开树莓派的Terminal
sudo nano /etc/apt/sources.list
将原来的内容用#注释,将下面的内容粘贴在最后
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib
Ctrl+O写入,Enter确认,Ctrl+X退出
再
sudo nano /etc/apt/sources.list.d/raspi.list
将原来的内容用#注释,将下面的内容粘贴在最后
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
Ctrl+O写入,Enter确认,Ctrl+X退出
假如你的系统不是Buster,请将buster换成你系统的版本,参见清华大学的helpTsinghua Open Source Mirrormirrors.tuna.tsinghua.edu.cn
二. 安装依赖
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libhdf5-dev libhdf5-serial-dev
sudo apt-get install libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5
sudo apt-get install libatlas-base-dev
sudo apt-get install libjasper-dev
可能对于你的工作而言这些安装包不够全面,但这保证了OpenCV的基础运行。
三. 安装OpenCV
2019.11.19建议:
sudo pip3 install --no-cache-dir opencv-contrib-python==3.4.3.18
#安装opencv3而不是默认的opencv4
下载速度可能会相当的龟速。
假如你实在受不了这个速度,或者下载出错的话,并且具有最最基本的计算机知识的话。
在这里举个例子:
我把这个文件在浏览器当中下载好之后。
将鼠标放到VNC窗口的最上方,点击文件传输的那个图标
点击Send files...
选择刚才下载的文件。上传。这样这个文件就会出现在你的树莓派桌面上(见上上图)。
cd /home/pi/Desktop
sudo pip3 install opencv_contrib_python-3.4.3.18-cp37-cp37m-linux_armv7l.whl
文件名和下载的那个一样即可
sudo python3
>>> import cv2
>>> print(cv2.__version__)
3.4.3
大功告成
原方法:
这种方法目前在树莓派4上很可能有问题。
sudo pip install opencv-contrib-python#可能会出现下文错误2
安装完成,检查一下
sudo python3
运行python
>>> import cv2
>>> print(cv2.__version__)
4.1.1#原方法
大功告成
四. 可能的错误
1.
下载速度太慢。
解决方法:
查看下载链接,手动下载安装。
Download后面就是链接,复制到有梯子的电脑上的浏览器下载。然后参见上面2019.11.19推荐方法进行安装
2.
在2019.11.17,当import cv2之后
Traceback (most recent call last):
File "", line 1, in
File "/usr/local/lib/python3.7/dist-packages/cv2/__init__.py", line 3, in
from .cv2 import *
ImportError: /usr/local/lib/python3.7/dist-packages/cv2/cv2.cpython-37m-arm-linux-gnueabihf.so: undefined symbol: __atomic_fetch_add_8
解决方法(每一次启动python之前都需要这样):
sudo find / -type f -name ‘atom.so*’
LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1.2.0 python3
之后再
>>> import cv2
>>> print(cv2.__version__)
4.1.1
假如你有相当的Linux知识,也可以通过虚拟环境解决,参见评论区第一条。
参考undefined symbol: __atomic_fetch_add_8stackoverflow.com
3.
2019.10.23,当sudo pip install opencv-contrib-python之后,显示md5码校验错误。
解决方法:
sudo pip install --no-cache-dir opencv-contrib-python
#而不是
#sudo pip install opencv-contrib-python
参考Python packages hash not matching whilst installing using pipstackoverflow.com
五. 后记
实际上,这种方法是通过pip安装非官方pre-built OpenCV软件包,它们不是http://OpenCV.org发布的官方OpenCV软件包。但这这并不意味着你需要因为它们不是官方的而感到不舒服,您只需要了解到它们没有得到http://OpenCV.org官方团队的直接认可和支持。(实际上这种方法也相当的不稳定,但pip比编译快了20倍,就将就着用)
实际上,使用pip安装是一种2018年下半年才实现的方法。这也就是为什么大部分教程仍然是使用编译安装。通过pip安装OpenCV比以往任何时候都容易。
但是对于某些项目,可能仍然需要完整的OpenCV安装,也就是编译安装,pip安装无法给你提供。
对于使用pip安装opencv,有两个安装包:opencv-python和opencv-contrib-python。区别在于,opencv-python只包含OpenCV库里的主要模块,而opencv-contrib-python包含主要模块和contrib模块,几乎包含了全部功能。
而且,不要同时安装opencv-python和opencv-contrib-python,你只需要选择其中一个。
参考:https://www.pyimagesearch.com/2018/09/19/pip-install-opencv/www.pyimagesearch.comInstall OpenCV 4 on Raspberry Pi 4 and Raspbian Buster - PyImageSearchwww.pyimagesearch.com
树莓派安装python3替换python2_在树莓派上安装基于python3的OpenCV相关推荐
- pip安装deb_技术|如何在 Ubuntu 上安装 pip
pip 是一个命令行工具,允许你安装 Python 编写的软件包. 学习如何在 Ubuntu 上安装 pip 以及如何使用它来安装 Python 应用程序. 有许多方法可以在 Ubuntu 上安装软件 ...
- apache mediawiki 安装_如何在CentOS 7上安装MediaWiki
如果您想构建自己的wiki网站,可以使用MediaWiki轻松完成, MediaWiki是一个最初为WikiPedia创建的PHP开源应用程序. 由于为此应用程序开发的第三方扩展,其功能可以轻松扩展. ...
- Ubuntu16.04安装wineqq国际版教程Ubuntu上安装wine QQ
转自:http://mt.sohu.com/20151210/n430726472.shtml 简述:Ubuntu16.04安装wineqq国际版教程Ubuntu上安装wine QQ国际版后如何定位好 ...
- 电脑端Android模拟器安装使用教程,如何在电脑上安装安卓软件
电脑端Android模拟器安装使用教程,如何在电脑上安装安卓软件 如今说到什么智能手机最火,那很多人肯定会说android系统的手机.如果你还没有Android手机,又想买一部试试,可是价格都不便宜, ...
- 树莓派从入门到放弃之Docker上安装Jellyfin视频服务器
一.Docker上安装Jellyfin 1.Jellyfin官网和Docker镜像站 2.VNC连接树莓派 1.拉取服务器镜像 在终端键入:sudo docker pull jellyfin/jell ...
- nuc安装linux系统,在 Intel NUC 上安装 Linux | Linux 中国
在上周,我买了一台 InteL NUC.虽然它是如此之小,但它与成熟的桌面型电脑差别甚小.实际上,大部分的基于 Linux 的微型 PC 都是基于 Intel NUC 构建的. 我买了第 8 代 Co ...
- opencv 安装_如何在 CentOS 8 上安装 OpenCV
本文最先发表在: 如何在 CentOS 8 上安装 OpenCVwww.itcoder.tech OpenCV(Open Source Computer Vision Library) 是一个开源的 ...
- alpine linux安装ftp,如何在Alpine Linux上安装GLPK?
在Alpine Linux上安装swiglpk包失败,并出现以下跟踪:Collecting swiglpk>=1.2.14; extra == "all" (from cam ...
- mac10.12 安装mysql_在mac os10.12上安装mysql5.7.18
会提示 command not found, 然后输入 alias mysql=/usr/local/mysql/bin/mysql alias mysqladmin=/usr/local/mysql ...
最新文章
- Git学习记录(一)
- Jquery v1.3.2 与v1.4.2在andSelf()函数方面的区别
- swoole的process模块创建和使用子进程
- e480换高分屏_全高清都不够用?是时候趁着双11上飞利浦的高分屏了
- 你真的了解Java中的三目运算符吗
- 广度优先遍历类似于二叉树的_二叉树的各种遍历方法的简单解释
- java 防止表单重复提交
- MySQL 修改视图
- C 语言取整的几种方法6,C语言有以下几种取整方法:
- 【Java基础学习笔记】- Day11 - 第四章 引用类型用法总结
- URAL 1233 Amusing Numbers 好题
- 解决go get i/o timeout的问题
- 寒假回归篇——C语言学习感悟2022.1.16
- C++ 串口通信程序
- JAVA8的ConcurrentHashMap为什么放弃了分段锁,有什么问题吗,如果你来设计,你如何 设计。
- 线性插值(双线性)(三线性)
- Solr基础理论【倒排索引,模糊查询】
- Clion新UI体验,墙裂推荐,用起来真的好爽啊!
- IOS开发中@2x图片等适应不同分辨率手机
- Kubernetes 单节点安装Clickhouse