Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python接口快速处理opencv图像像素_Python_Opencv_Numpy - Fatal编程技术网

使用python接口快速处理opencv图像像素

使用python接口快速处理opencv图像像素,python,opencv,numpy,Python,Opencv,Numpy,使用用于OpenCV的python接口,可以使用[]操作符轻松访问图像的像素,如下所示: img = cv.LoadImage('test.jpg') pixel = img[10,10] import numpy as np pixel = tuple( np.array([255,255,255]) - np.array(pixel) ) 变量pixel这里有一个python tuple对象,如(10,20,30)(例如3个通道),处理计算不是很方便,因为tuple类型不支持运算符“-”

使用用于OpenCV的python接口,可以使用[]操作符轻松访问图像的像素,如下所示:

img = cv.LoadImage('test.jpg')
pixel = img[10,10]
import numpy as np
pixel = tuple( np.array([255,255,255]) - np.array(pixel) )
变量pixel这里有一个python tuple对象,如(10,20,30)(例如3个通道),处理计算不是很方便,因为tuple类型不支持运算符“-”或“+”。如果我希望对像255-(10,20,30)这样的像素进行子结构,我必须 代码如下:

img = cv.LoadImage('test.jpg')
pixel = img[10,10]
import numpy as np
pixel = tuple( np.array([255,255,255]) - np.array(pixel) )

有没有更快更简单的解决方案
另一个问题:有没有一种方法可以对所有像素进行减法,比如在Matlab中使用矩阵减法:255-img(不要使用OpenCV内置函数)。

您可以使用
cv2array()/array2cv()
函数来自opencv源代码发行版中的adaptors.py,并使用
numpy
数组执行所有计算<代码>255-imgarr在这种情况下起作用。示例(只读阵列的
cv2array()
精简版):


我的opencv版本是2.1,我在\OpenCV2.1\interfaces\swig\python中找到adapters.py,并且没有一个名为cv2array()或array2cv()@PinkyJie:@PinkyJie:另一方面,上述方法可能已经过时。您的版本是否具有
cv.fromarray()
功能?你在
numpy.asarray(img)
上看到了什么?我使用“opencv-2.1.0-win32-vs2008.exe”安装了opencv,这是一个预编译版本,因此没有cv.fromarray()函数,numpy.asarray(img)返回iplimage对象数组,而不是numpy.ndarray。@PinkyJie:我在case
np.asarray()中添加了示例代码。
没有返回任何有用的内容。