我用的是巴斯勒相机拍摄图像,同时也使用pypylon将相机软件(pylon)与python连接起来
我想创建两个部分
并在不干扰fps的情况下并行保存。在
或者有没有什么方法可以将它们保存在缓冲区中,然后再使用它,这样就不会影响fps了?
下面是我的代码
import pypylon
pypylon.pylon_version.version
available_cameras = pypylon.factory.find_devices()
available_cameras
cam = pypylon.factory.create_device(available_cameras[0])
cam.opened
cam.open()
cam.properties['AcquisitionFrameRateEnable'] = True
cam.properties['AcquisitionFrameRate'] = 1000
cam.properties['ExposureTime']
cam.properties['ExposureTime'] = 1000
#import matplotlib.pyplot as plt
from scipy.misc import imsave
count=0
for image in cam.grab_images(30):
count +=1
a=str(count)
b=str('I:/'+ a+'.png')
imsave(b,image)
首先是:} 。在
scipy
的imsave
已被弃用,并计划将其删除。使用imageio
的^{现在来看看密码。有几种方法可以做到这一点。我将从最少的修改移到大多数修改。在
修正代码
我只想对你的程序进行一些更改,以便以后更容易修改,以便将来不会中断:
未来的修改将基于此。我建议您查找其中一些代码的作用,比如
'ExposureTime'
,因为这看起来像是您盲目地从示例中复制的。在缓冲器
为了在缓冲区中存储这些图像,我们可以通过将iterable转换为
^{pr2}$tuple
(只读列表)直接读取它们。一旦我们完成了缓冲区,我们可以del
来释放一些内存。在异步保存
我需要做一些关于多重处理的事情。哦,看,有一个Python模块叫做^{} 。我以前从来没有用过这个,但是通过阅读我可以创造这个:
这个解决方案就是你在标题中要求的。其中最神秘的部分是},这样代码的其余部分就可以工作了,这就是函数的第一行所实现的。在
pair
。这是因为enumerate
生成的每个项都是(i, image)
形式的元组。这只是一个参数,因此它作为一个参数传递给save_image
。我们需要将其扩展到两个变量count
和{您可能还注意到了
if __name__ == "__main__":
。这确保代码只在程序作为模块导入时运行,multiprocess
在内部使用它来查找save_image
函数。在我希望这是你想要的。如果你想澄清,请随时发表评论。如果你有别的问题,请再问一个问题。在
相关问题 更多 >
编程相关推荐