如何让 OpenCV 在 Raspberry Pi 4 (Raspbian Buster) 上完全运行?
Posted
技术标签:
【中文标题】如何让 OpenCV 在 Raspberry Pi 4 (Raspbian Buster) 上完全运行?【英文标题】:How can i make OpenCV work fully on Raspberry Pi 4 (Raspbian Buster)? 【发布时间】:2019-11-14 05:41:18 【问题描述】:我已经尝试了很多天,用 Raspbian Buster 在我的 Raspberry Pi 4 上安装 OpenCV,但我无法完成。在大多数情况下安装成功,但在导入或使用 cv2 方法(如 cv2.imshow())时,出现错误(见下文)。
是否有人让 OpenCV 在 Raspberry Pi 4 上工作,或者知道如何让它工作?提前感谢您的帮助:-)!
使用 pip 安装 OpenCV 后出错:
pip install opencv-python
pip install opencv-contrib-python
python
>>> import cv2
ImportError: libImath-2_2.so.12: cannot open shared object file: no such file or directory
我无法安装这个库“libImath-2_2.so.12”。错误仍然存在。
使用 conda 安装 OpenCV 后出错:
conda install -c conda-forge opencv
conda install -c conda-forge opencv=4.1.0
conda install -c menpo opencv
python
>>> import cv2
>>> img = cv2.imread("image.png", 0)
>>> cv2.imshow("Frame", img)
OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvShowImage, file /home/jhelmus/conda/conda-bld/opencv_1512174356192/work/modules/highgui/src/window.cpp, line 605
Traceback (most recent call last):
File "detect_video.py", line 113, in <module>
cv2.imshow("Frame", img_main)
cv2.error: /home/jhelmus/conda/conda-bld/opencv_1512174356192/work/modules/highgui/src/window.cpp:605: error: (-2) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function cvShowImage
我检查并已经安装了库 libgtk2.0-dev 和 pkg-config。我不知道如何“在函数 cvShowImage 中配置脚本”以使其工作。
通过编译安装 OpenCV 后出错
我完成了这两个指南中描述的编译过程。这些指南适用于我的 Raspberry Pi 3b,但不适用于我的 Raspberry Pi 4:
-
https://www.pyimagesearch.com/2018/09/26/install-opencv-4-on-your-raspberry-pi/
https://www.learnopencv.com/install-opencv-4-on-raspberry-pi/
我能够使用 make、sudo make install 等完成编译。之后,尽管我现在仍然必须将 openCV 安装链接到我的 Python 绑定。使用cmake
命令我设置了以下路径:
/home/pi/miniconda3/bin/python3 (ver 3.5.6)
Python 3 包:lib/python3.5/dist-packages
Python(用于构建):/usr/bin/python2.7
我现在如何访问 OpenCV,如何将其链接到 Python 以便我可以将其作为 cv2 导入?
提前感谢您的帮助:-)!
保罗
【问题讨论】:
pip install opencv-python-aarch64
试试
【参考方案1】:
用户 acine sachiro 发布的 answer 的稍短(列表/字典理解)版本。
import os
dct = 'apt-get' : ['update', 'upgrade', 'other commands', 'etc.'],
'apt-get install' : ['libatlas-base-dev','libjasper-dev', 'libqtgui4', 'libhdf5-dev'],
'pip3 instal' : ['flask', 'numpy', 'opencv-contrib-python', 'imutils', 'opencv-python']
# The below code shows how nested list comprehension works
for k,v in dct.items():
for i in v:
print (k,i)
# which can be re-written to:
[print (k,i) for k,v in dct.items() for i in v]
执行命令的实际工作代码是:
import os
dct = 'apt-get' : ['update', 'upgrade', 'other commands', 'etc.'],
'apt-get install' : ['libatlas-base-dev','libjasper-dev', 'libqtgui4', 'libhdf5-dev'],
'pip3 instal' : ['flask', 'numpy', 'opencv-contrib-python', 'imutils', 'opencv-python']
[os.system(f"sudo k i") for k,v in dct.items() for i in v]
【讨论】:
【参考方案2】:首先有一个全新的 raspbian
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libatlas-base-dev
sudo apt-get install libjasper-dev
sudo apt-get install libqtgui4
sudo apt-get install libqt4-test
sudo apt-get install libhdf5-dev
sudo pip3 install flask
sudo pip3 install numpy
sudo pip3 install opencv-contrib-python
sudo pip3 install imutils
sudo pip3 install opencv-python
【讨论】:
【参考方案3】:对于opencv 4.3.0 raspberry pi 4 raspbian buster tbb neon
安装步骤
wget https://github.com/cyysky/OpenCV-Raspberry-Pi-4-Package-for-Python/raw/master/opencv_4.3.0-1_armhf.deb
sudo dpkg -i opencv_4.3.0-1_armhf.deb # This will install fail for dependency
sudo apt-get -f install # Auto install dependency package
sudo dpkg -i opencv_4.3.0-1_armhf.deb # Now start install
sudo apt-get install tesseract-ocr # Optional : tesseract-ocr
如果你有import issues:
export LD_PRELOAD=$LD_PRELOAD:/usr/lib/arm-linux-gnueabihf/libatomic.so.1.2.0
【讨论】:
【参考方案4】:在@Ingo 的帮助下,我终于能够在 Raspbian Buster 上安装 OpenCV,其解决方案比预期的要简单得多:
只需运行sudo apt install python3-opencv
,它就可以工作,还可以使用 cv2.imshow() 创建窗口。
【讨论】:
@JakobHarderHolmelund 你得到什么错误信息? 它说没有名为 cv2 的模块 @dev1ce 你还需要运行python3 -m pip install opencv-python
不需要。见How to Install OpenCV on Raspberry Pi 3. Jul 5, 2019【参考方案5】:
您必须在 cmake
之后运行 make
。在下一步中,当您的 make
完成且没有错误时,您将运行 make install
。
现在您可以在 Python 中使用 OpenCV(假设您的配置有效)。
也许你必须重新构建opencv,因为你使用Python2.7进行构建。
将 PYTHON_DEFAULT_EXECUTABLE
设置为 Python3 以将 OpenCV 与 Python3 一起使用:
-DPYTHON_DEFAULT_EXECUTABLE=$(which python3)
【讨论】:
以上是关于如何让 OpenCV 在 Raspberry Pi 4 (Raspbian Buster) 上完全运行?的主要内容,如果未能解决你的问题,请参考以下文章
Raspberry Pi 上的 OpenCV 人脸检测速度很慢
OpenCV Raspberry Pi printf()不显示
Opencv:无法打开显示:C++、Raspberry Pi 无头连接
OpenCV VideoCapture 在 Raspberry Pi 2 上总是失败