使用Python在OpenCV中的imageData函数

时间:2010-10-04 23:29:27

标签: python opencv

我正在尝试使用OpenCV和Python对图像进行一些转换。我首先使用cvLoadImage函数读取图像,然后使用imageData函数获取图像数据。

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

问题是,imageData函数返回一个字符串数据,当我尝试对图像数据进行一些计算时,它会给出错误,例如不允许在Python中对字符串进行减法。

我以C代码为例,以下计算完全正常:

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

但在Python中,正如我所说,我不能这样做。关于这个的任何线索?关于这个语句Python和C有什么区别?如何在Python中应用这种计算?

3 个答案:

答案 0 :(得分:1)

正如您所说,imageData属性返回包含“原始图像数据”的二进制字符串(我不记得是什么格式)。相反,您应该通过索引到img对象来访问图像数据:

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

答案 1 :(得分:0)

如果您确定作为字符串获取的数据实际上是一个整数,则可以将其转换为int。

data = int(img.imageData)

http://docs.python.org/library/functions.html#int

然而,这可能不是实现目标的正确方法。您是否看过内置的库函数示例?

http://opencv.willowgarage.com/documentation/python/operations_on_arrays.html

答案 2 :(得分:0)