使用Python OpenCV将图像捕获为数组
我看到有示例展示了如何从摄像头显示图像,但我想知道怎么把捕捉到的图像转换成一个数组?
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 这两个包一起使用。