2016-10-22 170 views
0

我只是學習圖像處理,但cvtColor函數無法正常工作。它顯示以下錯誤。cvtColor函數在opencv中的失敗

OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /build/opencv-SviWsf/opencv-2.4.9.1+dfsg/modules/imgproc/src/color.cpp, line 3737 
Traceback (most recent call last): 
    File "harriscorner.py", line 6, in <module> 
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 
cv2.error: /build/opencv-SviWsf/opencv-2.4.9.1+dfsg/modules/imgproc/src/color.cpp:3737: error: (-215) scn == 3 || scn == 4 in function cvtColor 

其實我想哈里斯角點檢測方法,但cvtColor fucion不工作。任何人的幫助將不勝感激。 這是我的代碼。

import cv2 
import numpy as np 

filename = 'chessboard.jpg' 
img = cv2.imread(filename) 
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 

gray = np.float32(gray) 
dst = cv2.cornerHarris(gray,2,3,0.04) 

#result is dilated for marking the corners, not important 
dst = cv2.dilate(dst,None) 

# Threshold for an optimal value, it may vary depending on the image. 
img[dst>0.01*dst.max()]=[0,0,255] 

cv2.imshow('dst',img) 
if cv2.waitKey(0) & 0xff == 27: 
    cv2.destroyAllWindows() 
+1

多少個頻道在'chessboard.jpg'有哪些? – beaker

回答

0

由於您的代碼在從文件中讀取第一個cvtColor後顯示錯誤,因此可能是imread操作不成功。

開始通過確保您的圖像正確讀取:

filename = 'chessboard.jpg' 
img = cv2.imread(filename) 
cv2.imshow("src",img) 
cv2.waitKey(0)#proceed to remaining code when you press a key 
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 

如果你無法看到你在這個imshow圖像,然後檢查文件路徑是正確的。

0

試試這個:

filename = './chessboard.jpg'