簡體   English   中英

如何讓 OpenCV 在 Raspberry Pi 4(Raspbian Buster)上完全運行?

[英]How can i make OpenCV work fully on Raspberry Pi 4 (Raspbian Buster)?

我已經嘗試了很多天在我的 Raspberry Pi 4 上使用 Raspbian Buster 安裝 OpenCV,但我無法完成。 安裝在大多數情況下都有效,但在導入或使用 cv2.imshow() 等 cv2 方法時,會出現錯誤(見下文)。

有人讓 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 導入?

預先感謝您的幫助 :-)!

保羅

在@Ingo 的幫助下,我終於能夠在 Raspbian Buster 上安裝 OpenCV,其解決方案比預期的要簡單得多:

只需運行sudo apt install python3-opencv ,它就可以工作,並且還可以使用 cv2.imshow() 創建窗口。

首先有一個全新的 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

你必須在你的cmake之后運行make 在下一步中,當您的make完成且沒有錯誤時,您運行make install

現在您可以在 Python 中使用 OpenCV(假設您的配置有效)。 也許你必須重建opencv,因為你使用Python2.7進行構建。 PYTHON_DEFAULT_EXECUTABLE設置為 Python3 以將 OpenCV 與 Python3 一起使用: -DPYTHON_DEFAULT_EXECUTABLE=$(which python3)

對於 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

如果您有導入問題

export LD_PRELOAD=$LD_PRELOAD:/usr/lib/arm-linux-gnueabihf/libatomic.so.1.2.0

用戶 acine sachiro 發布的答案的略短(列表/字典理解)版本。

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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM