OpenCV中Python的imageData函数
我正在用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
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
>>>