簡體   English   中英

使用basler相機和python時保存視頻而不是保存圖像

[英]Save video instead of saving images while using basler camera and python

我正在使用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

只要FFmpeg程序可用,以上內容就可以與.mov.avi.mpg.mpeg.mp4.mkv.wmv使用。 如何安裝此程序取決於您的操作系統。 有關可以使用的參數的詳細信息,請參見此鏈接。

然后,只需使用以下命令替換對imwrite的調用:

writer.append_data(image)

確保在with塊中發生這種情況。

一個示例實現:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM