Как посчитать разные зерна на изображении с помощью cv2?Python

Программы на Python
Anonymous
Как посчитать разные зерна на изображении с помощью cv2?

Сообщение Anonymous »

У меня есть изображение, на котором ниже представлены крупы:
Изображение

На изображении есть:
  • 3 грецких ореха
  • 3 изюма
  • 3 тыквенных семечка
  • 27 похожих на вид хлопьев
Я хочу посчитать их отдельно с помощью opencv, но не хочу их распознавать. На данный момент я адаптировал метод AdaptiveThreshold для подсчета всех начальных чисел, но не знаю, как сделать это отдельно. Это мои скрипты:

Код: Выделить всё

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

img = cv2.imread('/Users/vaibhavsaxena/Desktop/Screen Shot 2021-04-27 at 12.22.46.png', 0)
#img = cv2.fastNlMeansDenoisingColored(img,None,10,10,7,21)
windowSize = 31
windowConstant = 40
mask = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, windowSize, windowConstant)
plt.imshow(mask)

stats = cv2.connectedComponentsWithStats(mask, 8)[2]
label_area = stats[1:, cv2.CC_STAT_AREA]

min_area, max_area = 345, max(list(label_area))  # min/max for a single circle
singular_mask = (min_area < label_area) & (label_area 

Подробнее здесь: [url]https://stackoverflow.com/questions/67277502/how-to-count-different-grains-in-an-image-using-cv2[/url]

Вернуться в «Python»