Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import cv2
- import numpy
- from math import pi
- image1=cv2.imread('/Users/dariabusi/Desktop/testsub.jpg',cv2.IMREAD_REDUCED_COLOR_2)
- image = cv2.imread('/Users/dariabusi/Desktop/testsub.jpg',cv2.IMREAD_REDUCED_GRAYSCALE_2)
- cv2.imshow ('Circle_Original', image)
- new_threshold, img = cv2.threshold(image, 220, 255, cv2.THRESH_BINARY)
- cv2.imshow ('Thresh_Binary', img)
- contours, hierarchy = cv2.findContours(image=img, mode=cv2.RETR_TREE, method=cv2.CHAIN_APPROX_SIMPLE)
- print('Amount of contours: ',str(len(contours)))
- """функция cv2.drawContours позволяет выделять контура определенным цветом определенной толщины, где:
- cv2.drawContours(
- image=image1 - исходное изображение для выделения коннтуров,
- contours=contours - все контура изображения,
- contourIdx=1 - номер индекса определенного контура,
- color=(0, 0, 0) - индексы цвета BRG,
- thickness=3 - толщина выделяемого контура"""
- cv2.drawContours (image1, contours, 1, (255, 0, 0), 2)
- cv2.drawContours (image1, contours, 2, (0, 255, 0), 2)
- cv2.imshow ('Thresh_Binary_CONTOUR', image1)
- """функция arcLength расчитывает периметер дуги(контура), где:
- perimeter = cv2.arcLength(cnt,True)
- cnt - контур
- True - указывает замкнутость дуги"""
- print('perimeter inner circle: ' ,str(cv2.arcLength(contours[1], True)))
- """функция contourArea считает площать указанного контура"""
- print('area inner circle: ' ,str(cv2.contourArea(contours[1])))
- """функция boundingRect выдает ограничивающий прямоугольник с координатами верхней левой точки угла прямоугольника,
- шириной w и высотой h. по полученным результатам строим его с помощью rectangle"""
- x, y, w, h = cv2.boundingRect(contours[1])
- cv2.rectangle(image1, (x, y), (x + w, y + h), (0, 255, 0), 2)
- print('area of the outer bounding rectangle: ', str(w*h))
- """minEnclosingCircle выдает координаты внешней описанной окружности с центром x,y и радиусом radius """
- (x,y),radius = cv2.minEnclosingCircle(contours[1])
- center = (int(x),int(y))
- radius = int(radius)
- cv2.circle(image1,center,radius,(0, 0, 255), thickness = 2)
- print('area of outer enclosing circle: ' ,str(pi*(radius**2)))
- print('perimeter outer circle: ' + str(cv2.arcLength(contours[2], True)))
- print('area outer circle: ' + str(cv2.contourArea(contours[2])))
- x, y, w, h = cv2.boundingRect(contours[2])
- cv2.rectangle(image1, (x, y), (x + w, y + h), (0, 255, 0), 2)
- print('area of inner bounding rectangle: '+ str(w*h))
- (x,y),radius = cv2.minEnclosingCircle(contours[2])
- center = (int(x),int(y))
- radius = int(radius)
- cv2.circle(image1,center,radius,(0, 0, 255), thickness = 2)
- print('area of inner enclosing circle: ' , str(pi*(radius**2)))
- cv2.waitKey(0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement