我正在尝试使用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中应用这种计算?
答案 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)