我用Python为Maemo编写了一个简单的程序,每次调用我的函数时都会检查一些像素的颜色。但是这个函数运行非常慢(每次调用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发布于 2011-11-25 20:04:20
通过os.system调用外部程序很可能是花费时间的原因。
尝试使用GStreamer Python Bindings,并在两次调用之间保持视频对象不变。The docs for Videomixer可能会有所帮助。
发布于 2011-12-06 01:18:55
正如乔治所说,您可能会在系统调用中产生开销,但我怀疑getpixel()调用。PIL的getpixel()是出了名的慢。取而代之的是load()图像,然后循环--这应该会更快。
https://stackoverflow.com/questions/7893413
复制相似问题