2012-12-18 15 views
6

我正在寻找一种方法将摄像头集成到我的Python程序中。使用Python/Linux阅读摄像头的选项

我在Raspberry Pi Model A OC'd上运行到9​​00mHz,所以解决方案需要与ARM兼容并且(希望是)轻量级。

我见过的大多数帖子都推荐使用OpenCV模块来读取摄像头,但是我无法获得任何东西,只能从我的摄像头看到黑框。我认为OpenCV与我的摄像头不兼容。但是,其他可用于Linux的网络摄像头应用程序都可以检测并显示来自我的网络摄像头的馈送。

我想知道是否有任何其他轻量级或简单的方法从我的摄像头使用python捕获。也许我可以直接与在/ dev /下为我的摄像头提供的video0设备进行交互?我愿意接受任何建议。因为我现在正在做的事情不起作用。

感谢

(的要求):

输出 v4l2-ctl --all

Driver Info (not using libv4l2): 
    Driver name : uvcvideo 
    Card type  : UVC Camera (046d:081b) 
    Bus info  : usb-bcm2708_usb-1.2 
    Driver version: 3.2.27 
    Capabilities : 0x04000001 
     Video Capture 
     Streaming 
Format Video Capture: 
    Width/Height : 640/480 
    Pixel Format : 'YUYV' 
    Field   : None 
    Bytes per Line: 1280 
    Size Image : 614400 
    Colorspace : SRGB 
Crop Capability Video Capture: 
    Bounds  : Left 0, Top 0, Width 640, Height 480 
    Default  : Left 0, Top 0, Width 640, Height 480 
    Pixel Aspect: 1/1 
Video input : 0 (Camera 1: ok) 
Streaming Parameters Video Capture: 
    Capabilities  : timeperframe 
    Frames per second: 30.000 (30/1) 
    Read buffers  : 0 

这是我使用的代码片段:

import cv 

cv.NamedWindow("camera", 1) 
capture = cv.CaptureFromCAM(0) 

while True: 
    img = cv.QueryFrame(capture) 
    cv.ShowImage("camera", img) 
    if cv.WaitKey(10) == 27: 
     break 

cv.DestroyWindow("camera") 

谢谢您帮帮我!

+0

请张贴'用v412-CTL --all'和你现在正在使用一些代码。 – gertvdijk

+0

我已将它添加到我的开始帖子。谢谢! –

回答

3

您可以使用gstreamer-0.10。

  1. 让它在命令行上工作。 例如:gst-launch -v v4l2src!解码器! ffmpegcolorspace! pngenc! filesink location = out.png

  2. 使用parse_launch函数在Python代码中获取工作管道的快捷方式。

    import gst 
    
    pipeline = gst.parse_launch(""" 
    v4l2src ! decodebin ! ffmpegcolorspace ! pngenc ! filesink location="%s" 
    """ % sys.argv[-1]) 
    
    pipeline.set_state(gst.STATE_PLAYING) 
    
1

我尝试了好几种方法从一个摄像头捕获单个帧:

uvccapture是一个选项,这里有一个命令:

uvccapture -d /dev/video0 -o outfile.jpg 

流光是另一个和该命令会大约是这样的:

streamer -c /dev/video0 -o outfile.jpeg 

是的我意识到这不是性能最高的,因为你必须使用Python的“命令”模块来执行这个命令并获得结果,并且t母鸡在OpenCV中打开生成的文件进行处理。

但它确实有效。我在一些自动化项目的生产中很成功地使用它。我的经验滞后都是基于我的图像处理软件,原始图像可以很快显示。

+0

保存到RAMDisk,'/ run/shm',速度会更快。 – Mustafa

相关问题