gpt4 book ai didi

python - 在 opencv 中使用均值合成帧

转载 作者:太空宇宙 更新时间:2023-11-03 22:17:09 25 4
gpt4 key购买 nike

我正在尝试通过循环视频中的一组帧并获取复合图像 + 下一帧的平均值,使用两幅图像的平均值创建合成图像。

然而,它看起来很糟糕。我究竟做错了什么?我想我一定是误解了在 numpy 或 opencv 中添加/划分数组的方式。由于它的亮度只有应有的一半,就好像添加从未发生过一样。加上树木粗糙的边缘。

enter image description here

import cv2
import numpy as np

frames = [cv2.imread('./frames2/thumb0001.jpg'),
cv2.imread('./frames2/thumb0002.jpg')]

composite = np.zeros((500, 500), dtype=np.uint8)
composite
for i, frame in enumerate(frames):
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
resized_frame = cv2.resize(gray, (500, 500))
composite = (resized_frame + composite) / 2
composite = composite.astype(np.uint8)

while True:
cv2.imshow('frame', composite)
if cv2.waitKey(1) & 0xFF == ord('q'):
break

最佳答案

问题是我使用的是 np.uint8 类型的数组,它在进行加法运算时会溢出。我所需要做的就是将其更改为 np.uint32,以便它可以在再次除法之前保存该数字。

我还需要确保在第一帧上我没有添加 0 + frame,第一帧应该使 composite = frame。

    if i == 0:
composite = resized_frame
else:
composite = composite.astype(np.uint32)
composite = (resized_frame + composite) / 2
composite = composite.astype(np.uint8)

enter image description here

关于python - 在 opencv 中使用均值合成帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56505913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com