在中使用python快速处理opencv图像像素

2024-03-28 18:33:59 发布

您现在位置:Python中文网/ 问答频道 /正文

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

img = cv.LoadImage('test.jpg')
pixel = img[10,10]

variablepixel这里是一个python tuple类对象(10,20,30)(例如3个通道),由于元组类型不支持运算符“-”或“+”,因此处理计算非常不方便。如果我希望在像素上做一个子结构,比如255-(10,20,30),我必须这样做 代码如下:

^{pr2}$

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


Tags: 对象test图像类型img运算符像素opencv
1条回答
网友
1楼 · 发布于 2024-03-28 18:33:59

您可以从中使用cv2array()/array2cv()函数适配器.py并使用numpy数组执行所有计算。255 - imgarr在这种情况下起作用。示例(只读数组的cv2array()的精简版本):

assert isinstance(img, cv.iplimage) and img.depth == cv.IPL_DEPTH_8U
a = np.frombuffer(img.tostring(), dtype=np.uint8)
a.shape = img.height, img.width, img.nChannels
print 255 - a

相关问题 更多 >