2017-01-16 3 views
1
img = cv2.imread('/home/user/Documents/pycharm-workspace/ImageProcessing/SDC10004.JPG', 1) 
img = cv2.medianBlur(img, 5) 
cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) 

circles = cv2.HoughCircles(img, cv2.cv.CV_HOUGH_GRADIENT, 1, 20,param1=50,param2=30,minRadius=0,maxRadius=0) 
circles = np.uint16(np.around(circles)) 
for i in circles[0, :]: 
    # draw the outer circle 
    cv2.circle(cimg, (i[0], i[1]), i[2], (0, 255, 0), 2) 
    # draw the center of the circle 
    cv2.circle(cimg, (i[0], i[1]), 2, (0, 0, 255), 3) 

cv2.imwrite('circles_detected.JPG', cimg) 

Я пытаюсь обнаружить круги по моему изображению с помощью функции HoughCircles из opencv.Python - OpenCV - Обнаружение круга с помощью HoughCircles

Это сообщение об ошибке я получаю:

cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) 
cv2.error: /build/buildd/opencv-2.4.8+dfsg1/modules/imgproc/src/color.cpp:3789: error: (-215) scn == 1 && (dcn == 3 || dcn == 4) in function cvtColor 

Я также пытался загрузить изображение в оттенках серого, как это и оставить функцию cvtColor от

img = cv2.imread('/home/user/Documents/pycharm-workspace/ImageProcessing/SDC10004.JPG', 0) 

Однако программа просто берет навсегда, чтобы бежать , Я ждал более 10 минут, и ничего не случилось.

Может кто-нибудь помочь мне, пожалуйста?

ответ

3

Для вашей первой ошибки, вы открываете изображение в цветном режиме с

img = cv2.imread('/home/user/Documents/pycharm-workspace/ImageProcessing/SDC10004.JPG', 1) #1 means color 

, а затем пытается преобразовать его рассматривая его как черно-белое изображение с

cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) #GRAY2BGR means gray to BGR. 
#You don't have a grayscale image to begin with. 

Для вашего второго вопроса, Преобразование Хафа - длительный процесс. Я попробовал ваш код с изображением 200 * 200, и это было мгновенно. Сначала попробуйте уменьшить изображения, чтобы увидеть, работает ли оно.

+0

@ cmplx96 всегда будьте осторожны с изображением, которое вы читаете, и тем, как вы его читаете. –

+1

WCS, когда вы используете imread на некорректном пути, и он не дает ошибку, просто возвращает None, который пойдет на его веселый способ уничтожить остальную часть вашего кода;). >>> всегда проверяйте None при прочтении! – Soltius

+0

Я масштабировал разрешение изображения вниз, и теперь он работает. Спасибо вам всем. – cmplx96

 Смежные вопросы

  • Нет связанных вопросов^_^