我正在将OpenCV用于计算机视觉项目,但是,我需要对图像进行逐像素操作,这意味着访问640x480图像中的每个像素并更改其HSV值。图像由3D阵列X,Y和HSV值组成,因此130,230处的像素可具有[12,26,18]的HSV值或在图像中表示:(130,230,(12, 26,18))
我需要执行一个操作,允许我在HSV值的V值(元素索引2)中添加一个X:(130,230,(12,26, 18 ) )
我可以使用两个循环来做到这一点:
for x in range(image.width):
for y in range(image.height/2):
initcolor = cv.Get2D(image, y, x)
initcolor2 = [0, 0, 10, 0]
summed = [sum(pair) for pair in zip(initcolor, initcolor2)]
cv.Set2D(image, y, x, summed)
但这非常缓慢,并且由于某种原因需要大约20秒才能完成整个图像的操作。
是否有更简单,更快捷的方法来实现这一目标?