使用 imageio 使用网络摄像头捕捉时更改图像大小

问题描述

我正在尝试使用每个函数调用捕获图像

import imageio as iio
camera = iio.get_reader("<video0>")
screenshot = camera.get_data(0)
plt.imsave(filename,screenshot)
camera.close()

我可以保存图像,但图像大小有所不同,有时大小为 960540,有时为 1280720。

我浏览了 imageio 的文档,但没有找到任何属性来设置其形状。我一直想要一个固定形状的图像。

我已经尝试过 OpenCV,它有它自己的限制 w.r.t 我的要求。

所以请只在这个包中推荐一些东西。

有人可以帮忙吗。

解决方法

您的评论明确表示您希望在整个视频期间保持分辨率一致。由于 imageio 不提供调整大小操作,我建议您使用 skimage 来处理该部分。

import imageio as iio
import matplotlib.pyplot as plt
from skimage.transform import resize

camera = iio.get_reader("<video0>")

filename = "experiment_"

# randomly set to 30 frames for this example
for i in range(0,30):
    screenshot = camera.get_data(i)
    # skimage resize function here
    screenshot = resize(screenshot,(1280,720))
    final_filename = str(i) + ".jpg"
    plt.imsave(filename+final_filename,screenshot)
camera.close()