Untitled
unknown
python
16 days ago
2.1 kB
4
Indexable
import cv2 import numpy as np # Загружаем изображение image = cv2.imread('image.jpg') # Преобразуем изображение в пространство цветов HSV hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # Определим диапазон для зелёного цвета в HSV lower_green = np.array([35, 50, 50]) # Нижний порог для зелёного цвета upper_green = np.array([85, 255, 255]) # Верхний порог для зелёного цвета # Маска для выделения зелёного цвета mask = cv2.inRange(hsv, lower_green, upper_green) # Применяем морфологические операции для очистки изображения от шума kernel = np.ones((5, 5), np.uint8) mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel) # Находим контуры contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # Функция для проверки, является ли контур квадратом def is_square(approx): if len(approx) == 4: side_lengths = [cv2.norm(approx[i] - approx[(i + 1) % 4]) for i in range(4)] return max(side_lengths) - min(side_lengths) < 10 # Точность, можно изменить return False # Перебираем контуры и ищем первый зелёный квадрат for contour in contours: epsilon = 0.04 * cv2.arcLength(contour, True) approx = cv2.approxPolyDP(contour, epsilon, True) if is_square(approx): # Рисуем первый найденный зелёный квадрат cv2.drawContours(image, [approx], -1, (0, 255, 0), 2) break # Останавливаемся на первом найденном квадрате # Сохраняем результат в файл cv2.imwrite('output_image.jpg', image) # Показываем результат cv2.imshow('Detected Green Square', image) cv2.waitKey(0) cv2.destroyAllWindows()
Editor is loading...
Leave a Comment