帧差法得到运动背景图像
生活随笔
收集整理的這篇文章主要介紹了
帧差法得到运动背景图像
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文以火災視頻為例,得到前后兩幀變化部分區域,進而可以進行運動物體檢測。
import cv2 as cv import scipy.ndimagedef medium_filter(im, x, y, step):sum_s = []for k in range(-int(step / 2), int(step / 2) + 1):for m in range(-int(step / 2), int(step / 2) + 1):sum_s.append(im[x + k][y + m])sum_s.sort()return sum_s[(int(step * step / 2) + 1)]def frame_diff(img_1, img_2, Thre):gray1 = cv.cvtColor(img_1, cv.COLOR_BGR2GRAY) # 灰度化gray1 = cv.GaussianBlur(gray1, (3, 3), 0) # 高斯濾波gray2 = cv.cvtColor(img_2, cv.COLOR_BGR2GRAY)gray2 = cv.GaussianBlur(gray2, (3, 3), 0)d_frame = cv.absdiff(gray1, gray2)ret, d_frame = cv.threshold(d_frame, Thre, 255, cv.THRESH_BINARY)result = scipy.ndimage.median_filter(d_frame, (7, 7)) # 對結果進行中值濾波return resultif __name__ == '__main__':capture = cv.VideoCapture("house5.mp4")Thre = 8 #Thre表示像素閾值ret1, frame1 = capture.read()frame2_copy = frame1while(True):frame1 = frame2_copyret2, frame2 = capture.read()if not ret2:print("... end of video file reached")breakd_frame = frame_diff(frame1, frame2, Thre)cv.namedWindow('Result of original img', 0)cv.imshow('Result of original img', frame2)cv.waitKey(2)cv.namedWindow('Result of frame diff', 0)cv.imshow('Result of frame diff', d_frame)cv.waitKey(2)frame2_copy = frame2.copy()總結
以上是生活随笔為你收集整理的帧差法得到运动背景图像的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]scite文本编辑器的说明
- 下一篇: Java开发 - Redis初体验