使用Python OpenCV将图像捕获为数组

3

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

import cv

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

img.tostring()给我奇怪的字符。 提前致谢。


你为什么想要将它捕获到数组中?具体的需求是什么? - Ankit Jaiswal
4个回答

3
我想这就是你要找的内容:

我认为这就是你要找的:

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

无论如何,您应该查看opencv python食谱,以便与PIL和NUMPY软件包一起使用。请参考此处的厨房百科全书。

2

请确保获取的opencv已包含numpy支持。我使用的工作顺序是:捕获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文档可以帮助您!

1

我认为你的问题可能是你打印/显示数组内容的方式。

不过,这篇博客文章展示了如何使用Python在Linux上从网络摄像头捕获帧。


0

谢谢,我不知道如何操纵它。我找到了一种方法将其转换为PIL图像,然后作为一个数组进行访问。img_array = Image.fromstring("RGBA", cv.GetSize(img), img.tostring()) - PuercoPop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接