#前提・実現したいこと
OpenCVのチュートリアルにある、
ハフ変換による円検出
をやっています。下記のようなエラーが出て、チュートリアルにあるような動作が出来ないです。
どのようにすれば、チュートリアルにあるような動作を実行することが出来ますでしょうか?
実現したいことは、
0. チュートリアルにある、円検出を実現したいです。
terarailにあった似た質問の写真を使いました。
#発生している問題・エラーメッセージ
エラーメッセージ
line 8, in <module>
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.1.1) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
#該当のソースコード
Python
1import cv2 2import matplotlib.pyplot as plt 3import numpy as np 4 5img = cv2.imread('tess.jpg') 6 7# グレースケールに変換 8gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 9# ガウシアンフィルタ 10gray = cv2.medianBlur(gray, 5) 11 12plt.imshow(gray, cmap='gray') 13plt.axis('off') 14plt.show() 15 16# ハフ変換による円検出 17circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 20, 18 param1=200, param2=50) 19circles = np.squeeze(circles, axis=0) # (1, N, 3) -> (N, 3) 20 21# 描画する。 22if circles is not None: 23 for x, y, radius in np.rint(circles).astype(int): 24 print('center: ({}, {}), radius: {}'.format(x, y, radius)) 25 cv2.circle(img, (x, y), radius, (0, 255, 0), 5) 26 cv2.circle(img, (x, y), 2, (0, 0, 255), 5) 27 28plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) 29plt.axis('off') 30plt.show()
#試したこと
teratailに似た質問
があったので、画像のパスを変更したり、質問文にあるコードを打ち込んでみました。
しかし、チュートリアル通りの動作になりませんでした。
#教えていただきたいこと
どのように、コードを変えればいのか?
また、どうやって解決方法を導き出したか教えていただきたいです。
自力で解決できるようになりたいので!
回答1件
あなたの回答
tips
プレビュー