树莓python imgproc模块保存

2024-04-18 04:14:41 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我使用了一个名为imgproc的python库,它使我可以从网络摄像头拍摄图像到树莓派。但我不知道如何将其保存到.jpg文件中。我到处都找过,但找不到答案任何地方都可以指向库的链接是here。我什么都试过了,但是我没有一个合适的方法。她现在的密码是:

import socket
import time
from imgproc import *
cam = Camera(320, 240)
host = "example.com"
port = 8888
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ri = socket.gethostbyname(host)
s.connect((ri , port))
x = True
while x:
    img = cam.grabImage()

Tags: 文件答案图像import网络hostport地方
1条回答
网友
1楼 · 发布于 2024-04-18 04:14:41

使用PIL或其他类似的库是可能的。但是,如果你想让它更快,就有一些问题。在

挑战来自于imgprocAPI,它似乎不允许对图像数据本身进行任何快速访问。唯一的方法是使用Image对象的__getitem__方法,例如img[x,y]。这看起来很像numpy数组,但不幸的是,它们没有其他共同点。在

imgproc是在C库上构建的非常薄的包装器。查看一下imgproc.py,它显示了所有可用的绑定。在

最有可能你需要逐像素地构建图像,这不是很快。例如:

img_array = numpy.array([ [ img[x,y] for x in range(img.width) ] for y in range(img.height) ] , dtype='uint8')

一旦有了图像数组,就可以将其转换为PIL图像并保存图像:

^{pr2}$

为了做到这一点,您需要numpy和{}模块(PIL)。这种方法不是很快。另一种方法是创建一个空的numpy数组并填充它:

img_array = numpy.empty((img.height, img.width, 3), dtype='uint8')
for y in range(img.height):
    for x in range(img.height):
        img_array[y,x] = img[x,y]

只有测试才能发现哪一个慢一些。在

原则上,通过在库周围添加功能更强大的包装器函数来扩充库,使其以更好的格式返回二进制缓冲区内容,这并不是难事,但这样做需要掌握C和python的知识。在

相关问题 更多 >