【问题标题】:How can i make OpenCV work fully on Raspberry Pi 4 (Raspbian Buster)?如何让 OpenCV 在 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:

  1. https://www.pyimagesearch.com/2018/09/26/install-opencv-4-on-your-raspberry-pi/
  2. https://www.learnopencv.com/install-opencv-4-on-raspberry-pi/

我能够使用 make、sudo make install 等完成编译。之后,尽管我现在仍然必须将 openCV 安装链接到我的 Python 绑定。使用cmake 命令我设置了以下路径:

  • Python 3 解释器:/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试试

标签: python opencv raspberry-pi


【解决方案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() 创建窗口。

        【讨论】:

        【解决方案5】:

        您必须在 cmake 之后运行 make。在下一步中,当您的 make 完成且没有错误时,您将运行 make install

        现在您可以在 Python 中使用 OpenCV(假设您的配置有效)。 也许你必须重新构建opencv,因为你使用Python2.7进行构建。 将 PYTHON_DEFAULT_EXECUTABLE 设置为 Python3 以将 OpenCV 与 Python3 一起使用: -DPYTHON_DEFAULT_EXECUTABLE=$(which python3)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-09-13
          • 2020-07-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多