2015-02-05 125 views
0

我以Python中的OpenCV开始,并且遇到问题。如何更改python(opencv)中的像素值而不使用for循环

我有一个从运动相机拍摄的深度图像。该图像具有像素值为零的边框。我想将这些值更改为图像的最大值(即2880),而不使用for循环。

代码,直到这里是:

import cv2 
depthImage = cv2.imread('depthImageName',cv2.IMREAD_UNCHANGED) 
if depthImage.any() == 0: 
    depthImage = 2880 

但它不工作,等于零值保持。

任何人可以帮助我吗?

如果我忘记了有用的信息,请告诉我。

在此先感谢你们! :)

回答

1

当你阅读使用imread的图像文件,它被存储在一个numpy的阵列。因此,您可以使用numpy数组的索引。像这样:

depthImage[depthImage==0] = 2880 
+0

即使是真的,那无论如何都会重复,而如果这是边境它可以在4次迭代 – Andrey 2015-02-05 22:36:56

+0

耶做,但它是一个高度优化的迭代。另外,对于不同的输入图像,顶部,左侧,底部,右侧值可能不知道或可能不一致。或者可能不想更改图像大小。 – 2015-02-05 23:02:56

+0

但OP指定他只想替换边界中的零,但他的代码看起来不同。 – Andrey 2015-02-05 23:05:19