2016-10-22 4 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 

Фактически я пытаюсь использовать метод обнаружения угла Harris, но 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 не была успешной.

Start, гарантируя, что ваше изображение правильно прочитать:

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, а затем проверить, если Filepath правильно.

0

Попробуйте это:

filename = './chessboard.jpg' 
Смежные вопросы