/
sat1988
/
MachineVision
Обзор
Документация
Войти
/
sat1988
/
MachineVision
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
task04/eval.py
70 строк
3 KB
Oleg Chorakaev
Добавлен 4 пример
26 июл 2025, 15:57
26 июл 2025, 15:57
8ed5f18
Код
Авторство
О чём код?
# -*- coding: utf-8 -*- import cv2 import numpy as np # TODO: Допишите импорт библиотек, которые собираетесь использовать def load_images(): """ Функция осуществляет загрузку эталонных изображений из файла(ов). Если вы не собираетесь использовать эту функцию, пусть возвращает пустой список [] Если вы используете несколько изображений, то возвращайте их списком [img1, img2, ...] То, что вы вернёте из этой функции, будет передано вторым аргументом в функцию predict_connect_number """ img_list = [] # TODO: Отредактируйте функцию по своему усмотрению. # Эталонные изображения вместе с файлом "eval.py" поместите в архив и загрузите на онлайн платформу в качестве решения. # Пример загрузки изображений из файлов # img1 = cv2.imread("Etalon1.png") # img_list.append(img1) # .... return img_list def predict_connect_number(image, img_list) -> int: """ Функция для определения номера разъёма, подходящего для зарядки. Входные данные: изображение (bgr), прочитано cv2.imread Выходные данные: целое число (int) от 1 до 4 Примеры вывода: 1 2 3 4 """ # TODO: Отредактируйте эту функцию по своему усмотрению. # Для удобства можно создать собственные функции в этом файле. # Алгоритм проверки один раз вызовет функцию load_images # и для каждого тестового изображения будет вызывать функцию track_movement # Все созданные вами функции должны вызываться из вышеперечисленных функций. image1 = cv2.resize(image, dsize = (1000,450), interpolation = cv2.INTER_AREA) hsv = cv2.cvtColor(image1, cv2.COLOR_BGR2HSV) lower_color1 = np.array([0, 0, 0]) upper_color1 = np.array([180, 50, 100]) mask_color1 = cv2.inRange(hsv, lower_color1, upper_color1) lower_color2 = np.array([0, 30, 20]) upper_color2 = np.array([180, 255, 255]) mask_color2 = cv2.inRange(hsv, lower_color2, upper_color2) mask_color = cv2.bitwise_or(mask_color1,mask_color2) cnts = cv2.findContours(mask_color, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) cnts = cnts[0] for c in cnts: if (cv2.contourArea(c) > 5000): x, y, w, h = cv2.boundingRect(c) cv2.rectangle(image1, (x, y), (x + w, y + h), (0, 0, 255), 2) cropped_image = image[x:x+w, y:y+w] cv2.imshow("Crop", cropped_image) cv2.imshow("Image", mask_color) cv2.imshow("Image2", image1) cv2.waitKey(0) result = 0 return result