Сохранение модуля imgproc для малины python

Привет, я использую библиотеку python под названием imgproc которая делает это так, что я могу снимать изображения с веб-камеры на малину-пи. Но я не знаю, как сохранить его в файле .jpg . Я исследовал всюду, но я не могу найти ответ нигде. Ссылка на библиотеку здесь . Я пробовал все, но у меня нет пи-куба, который является правильным методом. Имеет мой текущий код:

 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 или другую подобную библиотеку. Однако, если вы хотите, чтобы это было быстро, есть некоторые проблемы.

Задача исходит из API imgproc , который, похоже, не позволяет быстро получить доступ к данным изображения. Единственный метод для этого – использование метода __getitem__ объекта Image , например 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.