2011-10-25 8 views
6

私は、関数が呼び出されるたびにピクセルの色を確認するためにPythonによってMaemoの簡単なプログラムを書きました。しかし、この機能は非常にゆっくりと実行されます(呼び出しごとに3〜5秒)。これを行うより速い方法がありますか?maemoカメラをPythonで使用する

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 
+0

gstreamerに全く慣れていなくても、色空間変換は本当に必要ですか?また、品質パラメータを 'jpegenc'にチューニングすると助けになるかもしれません。 –

答えて

2

os.system経由で外部プログラムを呼び出すのは時間がかかる可能性があります。

代わりにGStreamer Python Bindingsを使用して、ビデオオブジェクトをコール間に保持してみてください。 The docs for Videomixerが役に立ちます。

1

ジョージが言っているように、システムコールでオーバーヘッドが発生する可能性がありますが、getpixel()と思われます。 PILのgetpixel()は非常に遅いです。代わりにload()イメージをクリックし、ループスルーします。

関連する問題