Как нарисовать прямую центральную линию после определения контуров рисования? - PullRequest
0 голосов
/ 01 марта 2020

Я планирую нарисовать центральную линию после обнаружения cv2.drawContour и рассчитать ее в мм (миллиметрах)? Возможно ли это в Opencv Python?

Изображение

Это результат, который я хочу, и он даст миллиметр.

img = cv2.imread('leaf4.jpg')
blur1 = cv2.GaussianBlur(img,(3,3),1)

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
lower_blue = np.array([5, 25, 25])
upper_blue = np.array([70, 255, 255])
thresh = cv2.inRange(hsv, lower_blue, upper_blue)

imask = thresh>0
green = np.zeros_like(img, np.uint8)
green[imask] = img[imask]

#Guassian blur
blur = cv2.GaussianBlur(img,(11,11),1)


#Canny-edge detection
canny = cv2.Canny(blur, 160, 290)
canny = cv2.cvtColor(canny,cv2.COLOR_GRAY2BGR)

# Find contours and sort for largest contour
cnts = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
cnts = sorted(cnts, key=cv2.contourArea, reverse=True)


for c in cnts:
    x, y, w, h = cv2.boundingRect(c)

    #Draw rectangle
    cv2.rectangle(green, (x, y), (x + w, y + h), (36, 255, 12), 2)
    cv2.putText(green, "w={},h={}".format(w, h), (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (36, 255, 12), 2)
    cv2.drawContours(green, [c], -1, (1, 55, 255),3)
    break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...