Top.Mail.Ru
Ответы

Помогите с заданием по Python

Написать программу для решения следующих задач:
Используя библиотеку OpenCV подсчет черных точек на белой поверхности изображения, которое выберет пользователь, если изображение цветное, то предварительно преобразовать его в чёрно-белое.
Точки выберите сами

По дате
По рейтингу
Аватар пользователя
Мудрец

import cv2
import numpy as np

def count_black_dots(image):
"""
Подсчитывает количество черных точек на белом фоне.

Args:
image: Путь к изображению или объект NumPy.

Returns:
Количество черных точек.
"""

# Преобразуем изображение в оттенки серого, если оно цветное
if len(image.shape) == 3:
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Определяем порог для binarization
thresh = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]

# Находим контуры
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# Подсчитываем количество контуров
return len(contours)

# Выбираем изображение
image_path = input("Введите путь к изображению: ")

# Читаем изображение
image = cv2.imread(image_path)

# Подсчитываем количество черных точек
num_dots = count_black_dots(image)

# Выводим результат
print(f"Количество черных точек: {num_dots}")