gpt4 book ai didi

python - 使用basler相机和python时保存视频而不是保存图像

转载 作者:行者123 更新时间:2023-12-01 09:33:06 27 4
gpt4 key购买 nike

我正在使用 Basler 相机和 python 来录制一些视频。我可以成功捕获单个帧,但我不知道如何录制视频。

以下是我的代码:

import os
import pypylon
from imageio import imwrite
import time
start=time.time()

print('Sampling rate (Hz):')
fsamp = input()
fsamp = float(fsamp)

time_exposure = 1000000*(1/fsamp)

available_cameras = pypylon.factory.find_devices()
cam = pypylon.factory.create_device(available_cameras[0])
cam.open()

#cam.properties['AcquisitionFrameRateEnable'] = True
#cam.properties['AcquisitionFrameRate'] = 1000
cam.properties['ExposureTime'] = time_exposure

buffer = tuple(cam.grab_images(2000))
for count, image in enumerate(buffer):
filename = str('I:/Example/{}.png'.format(count))
imwrite(filename, image)
del buffer

最佳答案

我还没有找到使用pypylon录制视频的方法;它似乎是 Pylon 周围的一个非常轻的包装。但是,我找到了一种使用 imageio 保存视频的方法:

from imageio import get_writer
with get_writer('I:/output-filename.mp4', fps=fps) as writer:
# Some stuff with the frames

以上内容可与 .mov.avi.mpg.mpeg.mp4.mkv.wmv,只要 FFmpeg 程序可用即可。如何安装该程序取决于您的操作系统。请参阅此链接 details on the parameters you can use .

然后,只需将对 imwrite 的调用替换为:

writer.append_data(image)

确保这发生在 with block 中。

示例实现:

import os
import pypylon
from imageio import get_writer

while True:
try:
fsamp = float(input('Sampling rate (Hz): '))
break
except ValueError:
print('Invalid input.')

time_exposure = 1000000 / fsamp

available_cameras = pypylon.factory.find_devices()
cam = pypylon.factory.create_device(available_cameras[0])
cam.open()

cam.properties['ExposureTime'] = time_exposure

buffer = tuple(cam.grab_images(2000))
with get_writer(
'I:/output-filename.mkv', # mkv players often support H.264
fps=fsamp, # FPS is in units Hz; should be real-time.
codec='libx264', # When used properly, this is basically
# "PNG for video" (i.e. lossless)
quality=None, # disables variable compression
pixelformat='rgb24', # keep it as RGB colours
ffmpeg_params=[ # compatibility with older library versions
'-preset', # set to faster, veryfast, superfast, ultrafast
'fast', # for higher speed but worse compression
'-crf', # quality; set to 0 for lossless, but keep in mind
'11' # that the camera probably adds static anyway
]
) as writer:
for image in buffer:
writer.append_data(image)
del buffer

关于python - 使用basler相机和python时保存视频而不是保存图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49782358/

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