gpt4 book ai didi

python - 使用 python-openCV 读取视频并保存为 pgm 格式的图像

转载 作者:行者123 更新时间:2023-12-02 16:08:23 25 4
gpt4 key购买 nike

首先,如果问题很愚蠢,我很抱歉。我是 python opencv 和图像处理的初学者。

我创建了一个程序,以便将视频作为输入读取并将其保存为 pgm 格式。

import cv2
vidcap = cv2.VideoCapture('input_video.mp4')
success,image = vidcap.read()
count = 0
while success:
cv2.imwrite("frame%d.pgm" % count, image) # save frame as PGM file
success,image = vidcap.read()
print('Read a new frame: ', success)
count += 1
vidcap.release()

运行后,我得到的帧似乎不完全是 PGM 图像的格式。 “魔数(Magic Number)”是“F6”而不是PGM格式的“F5”。据我所知,PPM 格式的“魔数(Magic Number)”(它可能称为 PGM '颜色',一种最低公分母彩色图像文件格式)是“F6”。我不明白为什么在这种情况下我不能拥有准确的 PGM 图像。有人可以解决这个问题并给我一个解决方案来输出 PGM 格式的帧吗?

video (我不知道如何在这里上传视频,所以我攻击了链接)。我用这个视频甚至是灰度版本进行了测试,但“魔数(Magic Number)”始终是“F6”。

在 SO 中,我发现了这个 link这可能与我的问题类似,但它适用于 C++。

最佳答案

您的图像将是彩色的,因此您需要先转换为灰度,然后才能将其保存为 PGM - 意思是“可移植 灰色 map ”:

# Convert to grey
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Write to disk
cv2.imwrite("frame%d.pgm" % count, gray)

顺便说一句,恕我直言,在不同的地方重复执行相同操作的代码通常是个坏主意 - 它使维护成为噩梦。而不是你做的地方 vidcap.read()两次:
success,image = vidcap.read()
...
while success:
cv2.imwrite("frame%d.pgm" % count, image)
success,image = vidcap.read()

考虑使用它,以便您只能在一处读取视频,并且只有一处可以添加/更改参数:
while True:
success,image = vidcap.read()
if not success:
break
cv2.imwrite("frame%d.pgm" % count, image)

关于python - 使用 python-openCV 读取视频并保存为 pgm 格式的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61107137/

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