前回の続きです.
対象物体に対しての最小外接円についての質問です.
サイト(https://pystyle.info/opencv-structural-analysis-and-shape-descriptors/#outline__10)をもとに自分なりに書いてみたものの、物体とは別の場所に円が付きます.
##################
ここに囲まれているところが最小外接円のコードです.
##################
解決できる人がいらっしゃいましたら,回答よろしくお願いいたします.
<コード>
python
1import numpy as np 2import cv2 3from pylab import * 4 5 6 7THRESH_MIN, THRESH_MAX = (220, 255) 8THRESH_MODE = cv2.THRESH_BINARY_INV 9 10 11img = cv2.imread('C:/Users/user/resize/img/img_00254.jpg', cv2.IMREAD_GRAYSCALE) 12 13 14nitikaimg = cv2.threshold(img, THRESH_MIN, THRESH_MAX, THRESH_MODE)[1] 15 16nitikaimg2 = cv2.bitwise_not(nitikaimg) 17 18cv2.imwrite("C:/Users/user/resize/output.png", nitikaimg2) 19 20 21 22img = cv2.imread("output.png", cv2.IMREAD_GRAYSCALE) 23 24 25contours, hierarchy = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 26 27 28max_contour = max(contours, key=lambda x: cv2.contourArea(x)) 29 30 31dst = np.zeros_like(img) 32 33cv2.drawContours( 34 dst, [max_contour], -1, color=255, thickness=-1, 35) 36 37cv2.imwrite("gan.jpg", dst) 38 39###################################### 40cnt = contours[0] 41(x,y),radius = cv2.minEnclosingCircle(cnt) 42center = (int(x),int(y)) 43radius = int(radius) 44circleimg = cv2.circle(dst,center,radius,(255,0,0),thickness=2) 45 46imshow(circleimg) 47###################################### 48cv2.imwrite("circle.jpg", circleimg) 49```
回答2件
あなたの回答
tips
プレビュー