Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
raspberry python imgproc模块保存_Python_Image_Raspberry Pi_Python Imaging Library - Fatal编程技术网

raspberry python imgproc模块保存

raspberry python imgproc模块保存,python,image,raspberry-pi,python-imaging-library,Python,Image,Raspberry Pi,Python Imaging Library,大家好,我使用了一个名为imgproc的python库,这样我就可以从网络摄像头将图像拍摄到树莓pi上。但是我不知道如何将它保存到.jpg文件中。我到处都研究过,但到处都找不到答案。图书馆的链接是。我已经尝试了所有的方法,但我没有一个pi凸轮,这是正确的方法。我现在的密码是: import socket import time from imgproc import * cam = Camera(320, 240) host = "example.com" port = 8888 s = soc

大家好,我使用了一个名为
imgproc
的python库,这样我就可以从网络摄像头将图像拍摄到树莓pi上。但是我不知道如何将它保存到
.jpg
文件中。我到处都研究过,但到处都找不到答案。图书馆的链接是。我已经尝试了所有的方法,但我没有一个pi凸轮,这是正确的方法。我现在的密码是:

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()

例如,可以使用PIL或其他类似的库。然而,如果你想让它快一点,就有一些问题

挑战来自
imgproc
API,它似乎不允许对图像数据本身进行任何快速访问。唯一的方法是使用
图像
对象的
方法,例如
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图像并保存图像:

pil_img = Image.fromarray(img_array)
pil_img.save('my_image.jpg')
为此,您需要
numpy
Image
模块(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语言的知识。

如果您对PNG图像满意,可以使用PyPNG。它是一个纯python模块,因此安装非常简单,您只需将单个模块复制到您想使用它的任何地方。当然,PNG图像占用了更多的空间。我建议您创建一个新问题,例如“如何在不使用凹凸或PIL的情况下在Python3.4中保存图像”。我知道用netPBM或BMP做起来相对简单,但如果你提出一个新问题,可能还有其他人能给你更好的答案!