import cv2
def absdiffDemo(image_1, image_2, thread0):
gray_image_1 = cv2.cvtColor(image_1, cv2.COLOR_BGR2GRAY) #灰度化
gray_image_1 = cv2.GaussianBlur(gray_image_1, (3, 3), 0) #高斯滤波
gray_image_2 = cv2.cvtColor(image_2, cv2.COLOR_BGR2GRAY)
gray_image_2 = cv2.GaussianBlur(gray_image_2, (3, 3), 0)
# 帧间差分,返回差值图像
d_frame = cv2.absdiff(gray_image_1, gray_image_2)
# 设置阈值 cv2.THRESH_BINARY(黑白二值)
ret, d_frame = cv2.threshold(d_frame, thread0, 255, cv2.THRESH_BINARY)
return d_frame
capture = cv2.VideoCapture("/home/clhiker/5.mp4")
Thread0 = 5 #sThre表示像素阈值
count = 0
ret, frame = capture.read() #初始帧
while(True):
cv2.waitKey(30)
ret_2, frame_2 = capture.read()
if ret_2 == False:
break
d_frame = absdiffDemo(frame, frame_2, Thread0)
cv2.imwrite('/home/clhiker/1/' + str(count) + '.jpg',d_frame)
# 帧迭代
frame = frame_2
count += 1帧间差分法
该博客文章由作者通过
CC BY 4.0进行授权。