解決 cv2.namedWindow 報錯問題

最近需要運行這樣一段代碼進行邊緣檢測:

import cv2

def nothing(x):
    pass

img = cv2.imread('0001.png', 0)

cv2.namedWindow('res')
cv2.createTrackbar('min', 'res', 0, 25, nothing)
cv2.createTrackbar('max', 'res', 0, 25, nothing)
while (1):
    if cv2.waitKey(1) & 0xFF==27:
        break
    maxVal = cv2.getTrackbarPos('max', 'res')
    minVal = cv2.getTrackbarPos('min', 'res')
    canny = cv2.Canny(img, 10 * minVal, 10 * maxVal)
    cv2.imshow('res', canny)
cv2.destroyAllWindows()

但是會報如下錯誤

Traceback (most recent call last):
  File "/home/test.py", line 11, in <module>
    cv2.namedWindow('res')
cv2.error: OpenCV(3.4.2) /tmp/build/80754af9/opencv-suite_1535558553474/work/modules/highgui/src/window.cpp:615: error: (-2: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 function 'cvNamedWindow'

系統是 Ubuntu 16.04,之前安裝 OpenCV 是直接通過 conda install opencv安裝的。這樣安裝的是 3.4.2 版本的 OpenCV。

下面列一些能解決這個問題的方法:

1.

conda remove opencv
pip install opencv-python

conda remove opencv
pip install opencv-contrib-python

這樣安裝的 OpenCV 是最新版本,可以成功運行。

2.

conda remove opencv
conda install -c conda-forge opencv=4.1.0

不加後面的 4.1.0 安裝的是 3.4.2 版本,4.1.0 版本可以成功運行。

3.

conda remove opencv
conda install -c menpo opencv3

安裝的是 3.1.0,可以運行,但是會有其他小問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章