如何在没有 for 循环的情况下更改 python (opencv) 中的像素值

how to change pixel values in python (opencv) without for loops

我在 Python 开始使用 OpenCV,但遇到了问题。

我有一张从 kinect 相机拍摄的深度图像。此图像有一个像素值为零的边框。我想在不使用 for 循环的情况下将这些值更改为图像的最大值(即 2880)。

到这里为止的代码是:

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

但它不起作用,等于零的值仍然存在。

谁能帮帮我?

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

提前谢谢大家! :)

有一个函数可以创建边框,copyMakeBorder, here is python tutorial:

img1 = cv2.imread('opencv_logo.png')
constant= cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_CONSTANT,value=BLUE)

当您使用 imread 读取图像文件时,它存储在一个 numpy 数组中。因此,您可以使用 numpy 数组的索引。像这样:

depthImage[depthImage==0] = 2880