#python #camera #gstreamer #maemo
#python #камера #gstreamer #maemo
Вопрос:
Я написал простую программу для Maemo на Python, чтобы проверять цвет некоторых пикселей при каждом вызове моей функции. Но эта функция выполняется очень медленно (3-5 секунд при каждом вызове). Есть ли более быстрый способ сделать это?
import Image
import os
import sys
# sen_pos = (pixel_x, pixel_y)
def sen(sen_pos):
os.system("gst-launch v4l2src device=/dev/video0 num-buffers=1 ! ffmpegcolorspace ! jpegenc ! filesink location=cam.jpg")
frame = Image.open("cam.jpg")
col = frame.getpixel((sen_pos[0], sen_pos[1]))
avecol = sum(col) / len(col)
if avecol > 127:
return "white"
elif avecol < 127:
return "black"
return None
Комментарии:
1. Действительно ли необходимо преобразование цветового пространства, не будучи знакомым с gstreamer? Кроме того,
jpegenc
может помочь настройка параметра качества.
Ответ №1:
Вызов внешней программы через os.system
, вероятно, отнимает время.
Попробуйте вместо этого использовать привязки GStreamer к Python и сохранять объект video между вызовами. Документы для Videomixer могут помочь.
Ответ №2:
Как говорит Джордж, вы можете понести накладные расходы при системном вызове, но я подозреваю getpixel()
, что вызов. PIL getpixel()
, как известно, работает медленно. Вместо load()
этого изображение, а затем цикл — это должно быть быстрее.