Advertisement
BlackDT

Untitled

Apr 7th, 2020
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.11 KB | None | 0 0
  1. import cv2
  2. import numpy
  3. from math import pi
  4.  
  5. image1=cv2.imread('/Users/dariabusi/Desktop/testsub.jpg',cv2.IMREAD_REDUCED_COLOR_2)
  6. image = cv2.imread('/Users/dariabusi/Desktop/testsub.jpg',cv2.IMREAD_REDUCED_GRAYSCALE_2)
  7. cv2.imshow ('Circle_Original', image)
  8.  
  9. new_threshold, img = cv2.threshold(image, 220, 255, cv2.THRESH_BINARY)
  10. cv2.imshow ('Thresh_Binary', img)
  11.  
  12. contours, hierarchy = cv2.findContours(image=img, mode=cv2.RETR_TREE, method=cv2.CHAIN_APPROX_SIMPLE)
  13.  
  14. print('Amount of contours: ',str(len(contours)))
  15.  
  16. """функция cv2.drawContours позволяет выделять контура определенным цветом определенной толщины, где:
  17. cv2.drawContours(
  18. image=image1 - исходное изображение для выделения коннтуров,
  19. contours=contours - все контура изображения,
  20. contourIdx=1 - номер индекса определенного контура,
  21. color=(0, 0, 0) - индексы цвета BRG,
  22. thickness=3 - толщина выделяемого контура"""
  23. cv2.drawContours (image1, contours, 1, (255, 0, 0), 2)
  24. cv2.drawContours (image1, contours, 2, (0, 255, 0), 2)
  25. cv2.imshow ('Thresh_Binary_CONTOUR', image1)
  26.  
  27. """функция arcLength расчитывает периметер дуги(контура), где:
  28. perimeter = cv2.arcLength(cnt,True)
  29. cnt - контур
  30. True - указывает замкнутость дуги"""
  31. print('perimeter inner circle: ' ,str(cv2.arcLength(contours[1], True)))
  32. """функция contourArea считает площать указанного контура"""
  33. print('area inner circle: ' ,str(cv2.contourArea(contours[1])))
  34.  
  35. """функция boundingRect выдает ограничивающий прямоугольник с координатами верхней левой точки угла прямоугольника,
  36. шириной w и высотой h. по полученным результатам строим его с помощью rectangle"""
  37. x, y, w, h = cv2.boundingRect(contours[1])
  38. cv2.rectangle(image1, (x, y), (x + w, y + h), (0, 255, 0), 2)
  39. print('area of the outer bounding rectangle: ', str(w*h))
  40.  
  41. """minEnclosingCircle выдает координаты внешней описанной окружности с центром x,y и радиусом radius """
  42. (x,y),radius = cv2.minEnclosingCircle(contours[1])
  43. center = (int(x),int(y))
  44. radius = int(radius)
  45. cv2.circle(image1,center,radius,(0, 0, 255), thickness = 2)
  46. print('area of outer enclosing circle: ' ,str(pi*(radius**2)))
  47.  
  48.  
  49. print('perimeter outer circle: ' + str(cv2.arcLength(contours[2], True)))
  50. print('area outer circle: ' + str(cv2.contourArea(contours[2])))
  51.  
  52. x, y, w, h = cv2.boundingRect(contours[2])
  53. cv2.rectangle(image1, (x, y), (x + w, y + h), (0, 255, 0), 2)
  54.  
  55. print('area of inner bounding rectangle: '+ str(w*h))
  56. (x,y),radius = cv2.minEnclosingCircle(contours[2])
  57. center = (int(x),int(y))
  58. radius = int(radius)
  59. cv2.circle(image1,center,radius,(0, 0, 255), thickness = 2)
  60. print('area of inner enclosing circle: ' , str(pi*(radius**2)))
  61. cv2.waitKey(0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement