Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:04
Обнаружение движущихся объектов - это метод, используемый в компьютерном зрении и обработке изображений. Несколько последовательных кадров из видео сравниваются различными методами, чтобы определить, обнаружен ли какой-либо движущийся объект.
Обнаружение движущихся объектов используется для широкого спектра приложений, таких как видеонаблюдение, распознавание активности, мониторинг состояния дорог, безопасность в аэропортах, мониторинг защиты вдоль морской границы и т. Д.
Обнаружение движущегося объекта - это распознавание физического движения объекта в заданном месте или регионе. [2] Сегментация между движущимися объектами и стационарной областью или областью позволяет отслеживать движение движущихся объектов и, таким образом, анализировать их позже. Чтобы достичь этого, рассмотрите видео как структуру, построенную на одиночных кадрах, обнаружение движущегося объекта заключается в обнаружении движущейся цели (целей) на переднем плане либо в каждом кадре видео, либо только тогда, когда движущаяся цель появляется в видео впервые.
Я собираюсь использовать комбинацию Opnecv и Python для обнаружения и отслеживания объектов на основе цвета.
Шаг 1: рисование прямоугольника на распознанном объекте
если на вашем компьютере нет python или opencv, следуйте инструкциям ниже
вот код Python:
импортировать cv2import numpy как np
cap = cv2. VideoCapture (0)
в то время как True:
_, frame = cap.read () hsv = cv2.cvtColor (frame, cv2. COLOR_BGR2HSV)
lower_yellow = np.array ([20, 110, 110])
upper_yellow = np.array ([40, 255, 255])
yellow_mask = cv2.inRange (hsv, нижний_желтый, верхний_желтый)
(_, contours, _) = cv2.findContours (yellow_mask, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
для контура в контурах:
area = cv2.contourArea (контур)
если (площадь> 800):
x, y, w, h = cv2.boundingRect (контур) frame = cv2.rectangle (frame, (x, y), (x + w, y + h), (0, 0, 255), 10)
cv2.imshow ("отслеживание", фрейм)
k = cv2.waitKey (5) & 0XFF
если k == 27: перерыв
cv2.destroyAllWindows ()
cap.release ()
Шаг 2: проследите путь, по которому переместился объект
проследить путь:
для i в диапазоне (1, len (center_points)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) if math.sqrt (((center_points [i - 1] [0] - center_points [0]) ** 2) + ((center_points [i - 1] [1] - center_points [1]) ** 2)) <= 50: cv2.line (кадр, center_points [i - 1], center_points , (b, g, r), 4)
Шаг 3: интеграция обоих кодов
я собираюсь интегрировать оба кода
import cv2import numpy as np import random from collection import deque
cap = cv2. VideoCapture (1)
# Для отслеживания всех точек посещения объекта center_points = deque ()
в то время как True:
# Прочитать и перевернуть frame _, frame = cap.read () frame = cv2.flip (frame, 1)
# Немного размываем рамку
blur_frame = cv2. GaussianBlur (кадр, (7, 7), 0)
# Преобразование из цветового формата BGR в HSV
hsv = cv2.cvtColor (blur_frame, cv2. COLOR_BGR2HSV)
# Определить нижний и верхний диапазон цвета hsv для обнаружения. Синий здесь
lower_blue = np.array ([100, 50, 50]) upper_blue = np.array ([140, 255, 255]) маска = cv2.inRange (hsv, lower_blue, upper_blue)
# Сделать эллиптическое ядро
ядро = cv2.getStructuringElement (cv2. MORPH_ELLIPSE, (15, 15))
# Открытие морфа (эрозия с последующей дилатацией)
маска = cv2.morphologyEx (маска, cv2. MORPH_OPEN, ядро)
# Найти все контуры
контуры, иерархия = cv2.findContours (mask.copy (), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE) [- 2:]
если len (контуры)> 0:
# Находим самый большой контур most_contour = max (contours, key = cv2.contourArea)
# Найдите центр контура и нарисуйте заполненный круг
моменты = cv2.moments (самый большой_контур) centre_of_contour = (int (моменты ['m10'] / моменты ['m00']), int (моменты ['m01'] / моменты ['m00'])) cv2.circle (кадр, центральный_контур, 5, (0, 0, 255), -1)
# Обвяжите контур кругом
эллипс = cv2.fitEllipse (самый большой_контур) cv2.ellipse (рамка, эллипс, (0, 255, 255), 2)
# Сохраняем центр контура, чтобы нарисовать линию, отслеживающую его
center_points.appendleft (центральный_контур)
# Рисуем линию от центральных точек контура
для i в диапазоне (1, len (center_points)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) if math.sqrt (((center_points [i - 1] [0] - center_points [0]) ** 2) + ((center_points [i - 1] [1] - center_points [1]) ** 2)) <= 50: cv2.line (кадр, center_points [i - 1], center_points , (b, g, r), 4)
cv2.imshow ('оригинал', кадр)
cv2.imshow ('маска', маска)
k = cv2.waitKey (5) & 0xFF
если k == 27: перерыв
cv2.destroyAllWindows ()
cap.release ()
Рекомендуемые:
Ультразвуковой датчик для регистрации изменений положения объектов: 3 шага
Ультразвуковой датчик для фиксации позиционных изменений объектов: важно сохранить ваши ценные вещи в безопасности, они будут хромыми, если вы будете охранять свой замок весь день. Используя камеру raspberry pi, вы можете делать снимки в нужный момент. Это руководство поможет вам снять видео или сделать фото
Raspberry Pi - автономный марсоход с отслеживанием объектов OpenCV: 7 шагов (с изображениями)
Raspberry Pi - автономный марсоход с отслеживанием объектов OpenCV: питание от Raspberry Pi 3, распознавание объектов Open CV, ультразвуковые датчики и мотор-редукторы постоянного тока. Этот марсоход может отслеживать любой объект, для которого он обучен, и перемещаться по любой местности
ОБНАРУЖЕНИЕ ОБЪЕКТОВ МАЛИНЫ PI Pi НЕСКОЛЬКИМИ КАМЕРАМИ: 3 шага
ОБНАРУЖЕНИЕ ОБЪЕКТОВ МАЛИНЫ ПИ ПИ НЕСКОЛЬКИМИ КАМЕРАМИ: Я буду держать вступление кратким, так как само название подсказывает, какова основная цель инструкции. В этой пошаговой инструкции я объясню вам, как подключить несколько камер, например 1-пи-камеру и хотя бы одну USB-камеру, или 2 USB-камеры
Обнаружение объектов с помощью Dragonboard 410c или 820c с использованием OpenCV и Tensorflow .: 4 шага
Обнаружение объектов W / Dragonboard 410c или 820c с использованием OpenCV и Tensorflow. В этой инструкции описывается, как установить OpenCV, Tensorflow и фреймворки машинного обучения для Python 3.5 для запуска приложения Object Detection
Отслеживание объектов - управление установкой камеры: 4 шага
Отслеживание объектов - управление установкой камеры: Привет всем, в этом руководстве я покажу вам прогресс, достигнутый в моем проекте отслеживания объектов. Здесь вы можете найти предыдущее руководство: https://www.instructables.com/id/Object-Tracking/ а здесь вы можете найти плейлисты YouTube со всеми т