6

我用 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
4

2 回答 2

2

通过调用外部程序os.system可能需要花费时间。

尝试使用GStreamer Python 绑定,并在调用之间保留视频对象。Videomixer 的文档可能会有所帮助。

于 2011-11-25T12:04:19.747 回答
1

正如乔治所说,您可能会在系统调用中产生开销,但我怀疑该getpixel()调用。getpixel()众所周知,PIL 的速度很慢。取而代之load()的是图像然后循环-应该更快。

于 2011-12-05T17:18:55.133 回答