2011-10-25 10 views
6

द्वारा माईमो कैमरा का उपयोग करें मैंने पाइथन द्वारा माईमो के लिए एक सरल कार्यक्रम लिखा है जब हर बार मेरे फ़ंक्शन को कॉल किया जाता है। लेकिन यह फ़ंक्शन बहुत धीरे-धीरे चलता है (प्रत्येक कॉल में 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 
+0

जीस्ट्रीमर से परिचित होने के बिना, रंगस्थान रूपांतरण वास्तव में आवश्यक है? साथ ही, 'jpegenc' को गुणवत्ता पैरामीटर को ट्यून करने में सहायता मिल सकती है। –

उत्तर

2

os.system के माध्यम से बाहरी प्रोग्राम को कॉल करने की संभावना है कि समय क्या हो रहा है।

इसके बजाय GStreamer Python Bindings का उपयोग करके और वीडियो ऑब्जेक्ट को कॉल के बीच में रखने का प्रयास करें। The docs for Videomixer मदद कर सकता है।

1

जैसा कि जॉर्ज कहता है, आप सिस्टम कॉल में ओवरहेड कर सकते हैं लेकिन मुझे getpixel() कॉल पर संदेह है। पीआईएल का getpixel() कुख्यात रूप से धीमा है। इसके बजाय load() छवि और फिर लूप के माध्यम से - यह तेज़ होना चाहिए।