Разобрать вывод opencv updateMotionHistory в Python - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь сгенерировать изображения MotionHistoryImages в оттенках серого из ленты живого изображения (веб-камеры) для обработки с помощью построенной мной модели CNN, из функции updateMotionHistory я получаю вывод:

[width x height] array of type np.float32

Я хочу преобразовать этот массив в изображение в градациях серого, чтобы ярче по мере изменения движения было похоже

РЕДАКТИРОВАТЬ: добавлен пример кода ниже

import cv2
import numpy as np
import time
import genMHI_util

cap = cv2.VideoCapture(0)
fgbg = cv2.createBackgroundSubtractorMOG2(history=1000,detectShadows=False)
colourThreshold = 0.975
frame_reduction_counter = 0

mhi = np.zeros((genMHI_util.MHI_WIDTH, genMHI_util.MHI_HEIGHT), np.float32)

while True:
    ret, frame = cap.read()
    # kernel = np.ones((5, 5), np.float32) / 25
    # frame = cv2.medianBlur(frame, 5)
    # frame = cv2.filter2D(frame, -1, kernel)  # Blur image

    if frame_reduction_counter >= 0: 
 # Disregarding frames that do not contain enough movement, below the set threshold
    frame_reduction_counter = 0

    timestamp = cv2.getTickCount() / cv2.getTickFrequency()

    # Do background subtraction on frame to get silhouette
    silhouette = fgbg.apply(frame)
    silhouette = cv2.resize(silhouette, (genMHI_util.MHI_WIDTH, genMHI_util.MHI_HEIGHT))

    # Update MHI
    cv2.motempl.updateMotionHistory(silhouette, mhi, timestamp, 0.5)

    # Do something with 'mhi' object (300x300 float array) ?

    # Convert float array to int
    mask = cv2.convertScaleAbs(mhi,
                               alpha=(255 / genMHI_util.MHI_DURATION),
                               beta=((genMHI_util.MHI_DURATION - timestamp) * 255 / genMHI_util.MHI_DURATION))

    # Preview images
    cv2.imshow('original', frame)
    cv2.imshow('silhouette', silhouette)
    cv2.imshow('mhi', mask)

    cv2.waitKey(1)

frame_reduction_counter += 1


cap.release()
cv2.destroyAllWindows()

ПОСТОЯННЫЕ:

MHI_DURATION = 5
MHI_WIDTH = 300
MHI_HEIGHT = 300

Вывод без движения - бит шума камеры

Вывод с движением - вид работ, но очень плохо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...