前提
python opencvを使用して画像上に複数存在する小さい点の検出を行いたいです.またそこから各点の中心座標を求めることが最終目標です.
ハフ検出を用いて行おうとしていたのですが,小さい点を円と認識できていないようです.cv2.HoughCirclesのパラメータをいろいろいじってはみたのですがなかなかうまくいきません.
そもそも点を認識するのに円の検出から行おうとしているところに問題もありそうですが,その他の良い方法を知らないので,もしあるのであればそこも教えていただけると幸いです.
規模感としては以下の本当はもっと細かい点を認識したいのですがひとまず下の画像の点を検出できればいいなと思っています.
分かる方,アドバイス,意見等なんでも受け付けているので少しでもなにかあればぜひ!!
実現したいこと
・画像上の点を検出し,その点の中心座標を求める
発生している問題・エラーメッセージ
小さい点の検出ができない.
エラーメッセージ
該当のソースコード
python
ソースコード ```import cv2 from matplotlib import pyplot as plt import numpy as np import math #画像の読み込み img = cv2.imread("images/sample4.png") #画像の平滑化 kernel = np.ones((5,5),np.float32)/25 dst = cv2.filter2D(img,-1,kernel) #グレースケール化 #gray = cv2.cvtColor(dst, cv2.COLOR_BGR2GRAY) #輪郭抽出 canny_img = cv2.Canny(dst, 50, 110) #円の検出 circles = cv2.HoughCircles(canny_img, cv2.HOUGH_GRADIENT, dp=1.2, minDist=20, param1=100, param2=40, minRadius=1, maxRadius=200) circles = np.uint16(np.around(circles)) for circle in circles[0, :]: # 円周を描画する cv2.circle(img, (circle[0], circle[1]), circle[2], (0, 165, 255), 5) # 中心点を描画する cv2.circle(img, (circle[0], circle[1]), 2, (0, 0, 255), 3) print([circle[0],circle[1],circle[2]]) cv2.imshow('sample',img) cv2.waitKey(0) cv2.destroyAllWindows() ### 試したこと 画像処理(二値化,グレースケール,特定の色のみを抽出するなど)を施した. 現在,最小外接円による円の検出を検討中 ### 補足情報(FW/ツールのバージョンなど)
まだ回答がついていません
会員登録して回答してみよう