如何在没有 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
我在 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