2017-03-07 10 views
0

これは私にとって最初のPythonプロジェクトです。openCVとHoughCircles、Pythonで無力に失われました

私はこの黒い円を検出しようとしていますhere。余りにも難しいはずはありませんが、何らかの理由で、引数に応じてどこでも0円または約500円を取得できます。しかし、中盤はありません。私は数時間の議論を試してみたように感じるが、まったく成功しない。 HoughCirclesと黒または白の画像を使用して問題がありますか?タスクは人間の目にとっては単純だと思われますが、何らかの理由でコンピュータにとってこれは困難ですか?ここで

は私の現在のコードです:

import numpy as np 
import cv2 

image = cv2.imread('temp.png') 
output = image.copy() 
blurred = cv2.blur(image,(10,10)) 

gray = cv2.cvtColor(blurred, cv2.COLOR_BGR2GRAY) 


circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1.5, 20, 100, 600, 10, 100) 


if circles is not None: 

    circles = np.round(circles[0, :]).astype("int") 
     print len(circles) 

    for (x, y, r) in circles: 
     cv2.circle(output, (x, y), r, (0, 255, 0), 4) 
     cv2.rectangle(output, (x - 5, y - 5), (x + 5, y + 5), (0, 128, 255), -1) 

    show the output image 
cv2.imshow("output", np.hstack([output])) 
cv2.waitKey(0) 

ありがとうございました。 最初のコメントの後に編集されます。

+0

あなたは 'gray'画像上に円を描くようにしようとしています。元のカラー画像に描画してみてください。 –

+0

また、入力画像のコピーである 'output'が表示されています.... –

+0

残念ながら、変更がどのように処理された画像に影響を与えているのかを確認するためにコードを変更しています。 まだプリントされていないlen(サークル)は1になりませんでした。 – OlliJJJ

答えて

1

あなたのアプローチにはほとんど間違いがありません。ここで

は、私が文書から使用するコードです:

img = cv2.imread('temp.png',0) 
img = cv2.medianBlur(img,5) 
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR) 
cimg1 = cimg.copy() 

circles = cv2.HoughCircles img,cv2.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,255,255),3) 

cv2.imshow('detected circles.jpg',cimg) 

enter image description here

joint = np.hstack([cimg1, cimg]) #---Posting the original image along with the image having the detected circle 
cv2.imshow('detected circle and output', joint) 

enter image description here

+0

ありがとう、それは動作します!以前はこれらの設定を試しましたが、この行は次のように見えます:img = cv2.medianBlur(img、5) が決定的です。それがなければ結果は私のものに似ています。そのメジアンブラーが必要な理由を知ってうれしいです。 – OlliJJJ

+0

私はあなたが統計の中央値を理解することを願っています。ここでも同じ原則が適用されます。 –

+0

また、ドキュメントに記載されているさまざまなぼかし技法を試してみてください。それらのすべてを1つのイメージに適用すれば、あなたはその違いに気付くでしょう –

関連する問題