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

3 投票
4 回答
12846 浏览
提问于 2025-04-16 03:04

我看到有示例展示了如何从摄像头显示图像,但我想知道怎么把捕捉到的图像转换成一个数组?

import cv

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

用img.tostring()得到的结果是一些奇怪的字符。

提前谢谢你。

4 个回答

1

我觉得你的问题可能出在你打印或显示数组内容的方式上。

不过,这篇博客介绍了如何在Linux上用Python从网络摄像头捕捉画面。

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的文档可以帮助你!

3

我觉得这就是你想要的内容:

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

无论如何,你应该查看一下 opencv python 的 食谱,它可以和 PIL 以及 NUMPY 这两个包一起使用。

撰写回答