OpenCV中Python的imageData函数

2 投票
3 回答
3915 浏览
提问于 2025-04-16 04:59

我正在用OpenCV和Python对一张图片进行一些处理。我首先用cvLoadImage函数读取了这张图片,然后用imageData函数获取了图片的数据。

img = highgui.cvLoadImage("x.png",1)
data = img.imageData

问题是,imageData函数返回的是字符串数据,而当我尝试对这些图片数据进行计算时,就会出错,因为在Python中,字符串是不能进行减法运算的。

我有一段C语言的代码作为例子,下面的计算在C语言中完全可以正常工作:

x= data[100] + 4*data[40] -data[20]

但是在Python中,正如我所说的,我无法这样做。有没有什么线索?Python和C语言在这方面有什么不同,我该如何在Python中进行这种计算呢?

3 个回答

0

试试这个:

用Python OpenCV将图像捕捉为数组

我建议你看看 Python OpenCV食谱

0

如果你确定你得到的字符串数据实际上是一个整数,你可以把它转换成整数。

也就是说:

data = int(img.imageData)

你可以查看这个链接了解更多关于整数转换的内容:http://docs.python.org/library/functions.html#int

不过,这可能不是实现你目标的正确方法。你有没有看过内置库函数的例子呢?

这里有一个链接可以帮助你了解更多关于数组操作的内容:http://opencv.willowgarage.com/documentation/python/operations_on_arrays.html

1

正如你所说,imageData 属性会返回一个包含“原始图像数据”的二进制字符串(不过我不记得具体是什么格式了)。其实,你应该通过索引 img 对象来获取图像数据:

>>> img = cv.CreateImage((10, 10), 8, 1)
>>> img[0, 0]
0.0
>>> img[0, 3] = 1.3
>>>

撰写回答