import cv2 # 動画ファイルを読み込みclassオブジェクトに入れる img = cv2.imread(r'path') # ####グレースケール画像に変換 #### S gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.imshow('aaa', gray) # ####グレースケール画像に変換 #### E # #####1/4ダウンサンプリング##### S r1 = cv2.pyrDown(gray) cv2.imshow('PyrDown1', r1) # #####1/4ダウンサンプリング##### E # #### エッジ検出 #### S edges = cv2.Canny(r1, 190, 380) cv2.imshow('edge', edges) # #### エッジ検出 #### E # 輪郭取得 contours,hierarchy = cv2.findContours(edges,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) # 面積が最大の輪郭を選択する。 cnt = max(contours, key=lambda x: cv2.contourArea(x)) # 外接矩形を取得する。 (x,y),radius = cv2.minEnclosingCircle(cnt) center = (int(x), int(y)) radius = int(radius) en1= cv2.circle(r1, center, radius, (0, 255, 0), 2) cv2.imshow('en1', en1) roi = gray[y:y + radius + 10, x:x + radius + 10] cv2.imshow('roi', roi) cv2.waitKey(0) cv2.destroyAllWindows() コード
質問:
自分でコードを書いてみました。(合っているか分かりませんが)
問題点が2つあります。
1つ目は外接矩形で取得したcenterとradiusをint型にして
roi = gray[y:y + radius + 10, x:x + radius + 10]に入れたのですが、下記のエラーが出ます。
<エラー内容>
TypeError: slice indices must be integers or None or have an index method
2つ目はcv2.imshow()で画面が表示できない。応答していませんとエラーがでます。
cv2.waitkey(0)とcv2.destroyAllWindows()がないとこの現象が起きるとネットたのですが、
付け加えても改善されません。
どなたか改善方法を教えてください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。