私は信号機(明らかに円)を検出しなければならないプロジェクトに取り組んでいます。現在、スポットから拾ったサンプル画像を使用していますが、すべての努力の後、適切な円 (光) を検出するコードを取得できません。
コードは次のとおりです。
# import the necessary packages
import numpy as np
import cv2
image = cv2.imread('circleTestsmall.png')
output = image.copy()
# Apply Guassian Blur to smooth the image
blur = cv2.GaussianBlur(image,(9,9),0)
gray = cv2.cvtColor(blur, cv2.COLOR_BGR2GRAY)
# detect circles in the image
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1.2, 200)
# ensure at least some circles were found
if circles is not None:
# convert the (x, y) coordinates and radius of the circles to integers
circles = np.round(circles[0, :]).astype("int")
# loop over the (x, y) coordinates and radius of the circles
for (x, y, r) in circles:
# draw the circle in the output image, then draw a rectangle
# corresponding to the center of the circle
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", output)
cv2.imshow('Blur', blur)
cv2.waitKey(0)
円を検出したい画像-
これは出力イメージです:-
ハフ変換でガウスぼかし半径値と minDist パラメータを試してみましたが、あまり成功しませんでした。
誰かが私を正しい方向に向けることができますか?
PS- トピック外の質問もありますが、私のプロジェクトにとって重要なものもあります-
1. 私のコンピューターは、最終的な画像を表示するのに約 6 ~ 7 秒かかります。私のコードは悪いですか、それとも私のコンピュータは悪いですか? 私のスペックは - Intel i3 M350 2.6 GHz (第 1 世代)、6GB RAM、Intel HD グラフィックス 1000 1625 MB です。
2. ハフ変換は、バイナリしきい値処理された画像で直接機能しますか?
3. このコードは、Raspberry Pi 3 でリアルタイムに実行できるほど高速に実行されますか? (移動する自律型ロボットに搭載する必要があります。)
ありがとうございました!