2017-01-16 79 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) 

opencvのHoughCircles関数で画像内の円を検出しようとしています。Python - OpenCV - HoughCirclesによる円検出

これは私が取得エラーメッセージです:プログラムはちょうど実行に永遠にかかるしかし、私はまた、このようなグレースケール画像をロードし、

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

オフcvtColor機能を残すことを試みた

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 

。私は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 @ cmplx96は、読んだ画像とその読み方に常に注意してください。 –

+1

WCSは、誤ったパスでimreadを使用したときにエラーが発生しない場合、コードの残りの部分を破棄するというメリットのある方法でNoneを返します。 >>>あなたが読んでいるときは、常にNoneをチェックしてください! – Soltius

+0

イメージの解像度を下げて、今は動作しています。皆さん、ありがとうございました。 – cmplx96

関連する問題