欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python 視頻去抖動

錢瀠龍2年前8瀏覽0評論

Python是一種非常受歡迎的編程語言,有著廣泛的應用場景。在數字圖像處理方面,Python也有著很強的實用性。其中,視頻去抖動就是一個應用場景,下面我們就來理解一下Python中如何實現視頻去抖動。

import cv2
import numpy as np
def deframe(video_path):
vidcap = cv2.VideoCapture(video_path)
count = 0
success,frame = vidcap.read()
height,width,channel = frame.shape
result = np.zeros((height,width,channel, count), dtype=np.uint8)
while success:
result[:, :, :, count] = frame
success,frame = vidcap.read()
count += 1
return result, count
def stabilize(video_path, smoothfactor=10):
frames, count = deframe(video_path)
# 得到歷史幀和平均幀列表
history = []
average = frames[0].astype(np.float32)
result = np.zeros_like(frames)
for i in range(count):
# 求出每一幀與平均幀的偏移量
diff = cv2.absdiff(frames[i], cv2.convertScaleAbs(average))
diffsum = np.sum(diff)
# 判斷是否要加入該幀
history.append((i, diffsum))
if len(history) >smoothfactor:
history.pop(0)
mean = np.mean([x[1] for x in history])
# 更新平均幀
if diffsum >mean:
alpha = 1.0 / (len(history) + 1)
average = frames[i] * alpha + \
np.sum([eachframe[0] * alpha for eachframe in history], axis=0)
# 將更新后的幀加入結果列表
result[i] = cv2.convertScaleAbs(frames[i] - average)
return result

上述代碼展示了Python中如何使用OpenCV實現視頻去抖動的基本原理,主要包括讀取視頻文件、轉換為灰度圖像、計算幀間差值、并利用平均濾波器去除幀間抖動。

總體來說,代碼腳本難度不大,但是需要對OpenCV庫有一定掌握,不然可能會遇到許多困難。希望以上的文章能夠對你有幫助。