首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用basler相机和python保存视频而不是保存图像

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

Stack Overflow用户
提问于 2018-04-11 18:43:10
回答 1查看 4.4K关注 0票数 3

我用Basler相机和python录了一些视频。我可以成功地捕捉到不同的画面,但我不知道如何录制视频。

以下是我的代码:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-11 19:13:15

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

代码语言:javascript
复制
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程序可用。如何安装这个程序取决于您的操作系统。请参阅有关可以使用的参数的详细信息的此链接。

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

代码语言:javascript
复制
writer.append_data(image)

确保这发生在with块中。

一个实例实现:

代码语言:javascript
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49782358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档