Python OpenCV находит треугольники по заданному изображению икосаэдра - PullRequest
0 голосов
/ 26 января 2020

Учитывая это изображение икосаэдра, мне нужно найти число треугольников в нем.

ниже приведен код для того же

import cv2
import matplotlib.pyplot as plt
import numpy as np
import imutils

# loading image and thresholding
img = cv2.imread('382-3825690_everything-is-possible-geometric-shapes-icosahedron.png')
gray = cv2.cvtColor(img.copy(), cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
thresh = cv2.threshold(blurred, 0, 255, cv2.THRESH_BINARY_INV)[1]
# plt.imshow(thresh)
# plt.show()
contours = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(contours)

# getting triangles
img_1 = img.copy()
triangles_found = 0
for c in cnts:
  peri = cv2.arcLength(c, True)
  approx = cv2.approxPolyDP(c, 0.04 * peri, True)
  if len(approx) == 3:
    triangles_found += 1
    # cv2.drawContours(img_1, c, -1, (0, 255, 0), 3) 
    # plt.imshow(img_1)
    # plt.show()

enter image description here

triangles_found = 14 после выполнения, но когда я рисовал контуры контуров, где нет треугольников

, пожалуйста, кто-нибудь может подсказать мне, как извлечь треугольники?

...