最近需要運行這樣一段代碼進行邊緣檢測:
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,可以運行,但是會有其他小問題。