2017-01-16 53 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

這是錯誤消息我得到:

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,它將以破壞其餘代碼的快樂方式返回;)。 >>>當你閱讀時總是檢查無! – Soltius

+0

我縮小了圖像分辨率,現在它正在工作。謝謝你們。 – cmplx96