Создание HeatMap поверх видео с использованием OpenCV - PullRequest
0 голосов
/ 16 марта 2020
import numpy as np
import cv2
import copy

def main():
    cap = cv2.VideoCapture('inputVideo.mp4')

    bs = cv2.createBackgroundSubtractorMOG2()

    length = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))

    first_iteration_indicator = 1
    for i in range(0, length):

        ret, frame = cap.read()

        if (first_iteration_indicator == 1):

            first_frame = copy.deepcopy(frame)
            gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
            height, width = gray.shape[:2]
            accum_image = np.zeros((height, width), np.uint8)
            first_iteration_indicator = 0
        else:
            ret, frame = cap.read()  
            gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  

            fgmask = bs.apply(gray)

            thresh = 2
            maxValue = 2
            ret, th1 = cv2.threshold(fgmask, thresh, maxValue, cv2.THRESH_BINARY)


            accum_image = cv2.add(accum_image, th1)
            color_image = cv2.applyColorMap(accum_image, cv2.COLORMAP_SUMMER)
            result_overlay = cv2.addWeighted(first_frame, 0.7, color_image, 0.7, 0)
            cv2.imwrite('overlay.jpg', result_overlay)

        if cv2.waitKey(1) & 0xFF == ord('q'):
            break


    cap.release()
    cv2.destroyAllWindows()

if __name__=='__main__':
    main()

Я создал оверлейное изображение, но я не знаю, как показать это оверлейное изображение на видео. Я хочу сохранить выходной файл в формате видео с тепловой картой поверх него. Кто-нибудь может мне помочь, пожалуйста?

...