【问题标题】:Capture Image as Array with Python OpenCV使用 Python OpenCV 将图像捕获为数组
【发布时间】:2011-04-01 12:35:54
【问题描述】:

我从示例中看到了如何显示来自网络摄像头的图像,但是如何将图像捕获为数组?

import cv

capture = cv.CaptureFromCAM(0)
img = cv.QueryFrame(capture)

img.tostring() 给了我奇怪的字符。 感谢您的建议。

【问题讨论】:

  • 为什么要在数组中捕获它?具体要求是什么?

标签: python opencv


【解决方案1】:

我想这就是你要找的东西:

img=cv.LoadImage("asd.png")
mat=cv.GetMat(img)
mat[3,1]
(83.0, 88.0, 89.0)

无论如何,您应该检查 opencv python cookbook 是否与 PIL 和 NUMPY 包一起使用。

【讨论】:

    【解决方案2】:

    确保获得包含 numpy 支持的 opencv。对我有用的序列是捕获 IPL,转换为 cvMat,转换为 numpy:

    import cv, numpy, pylab
    capture = cv.CaptureFromCAM(0)
    img = cv.QueryFrame(capture)
    mat=cv.GetMat(img)
    a = numpy.asarray(mat)
    pylab.imshow(a)
    

    请注意,颜色的表示与 pylab 假设的不同。但是有opencv documentation 来帮助您!

    【讨论】:

      【解决方案3】:

      我相信您的问题可能是您打印/显示数组内容的方式。

      尽管如此,this blog post 展示了如何使用 python 从 Linux 上的网络摄像头捕获帧。

      【讨论】:

        【解决方案4】:

        根据文档,QueryFrame 返回一个IplImage。 IplImage 可以被视为arbitrary array。您似乎想使用 "Get" set of functions 来访问数组元素。

        【讨论】:

        • 谢谢,我不知道如何操作它。我找到了一种将其转换为 PIL 图像然后作为数组访问的方法。 img_array = Image.fromstring("RGBA",cv.GetSize(img), img.tostring())
        猜你喜欢
        • 2018-09-05
        • 1970-01-01
        • 2015-07-18
        • 1970-01-01
        • 1970-01-01
        • 2016-03-17
        • 1970-01-01
        • 2016-09-15
        • 1970-01-01
        相关资源
        最近更新 更多