如何更改灰度图像中的特定像素值?

时间:2019-06-18 19:22:49

标签: python opencv computer-vision grayscale

我想使用OpenCV更改灰度图像的像素值。

假设我有一个灰度图像,并且想一次将其所有像素转换为0值。从而使最终图像为全黑。我试过了,但是图像没有变化:

image = cv2.imread('test_image.png',0)

for i in range(image.shape[0]):
    for j in range(image.shape[1]):
        image[i, j] = 0

结果:

显示更新的图像

2 个答案:

答案 0 :(得分:1)

在大多数情况下,您要避免使用两次for循环来修改像素值,因为它非常慢。更好的方法是使用Numpy进行像素修改,因为OpenCV使用Numpy数组显示图像。为了获得所需的结果,可以使用np.zeros创建与原始图像形状相同的全黑图像。

import cv2
import numpy as np

image = cv2.imread("test_image.png", 0)

black = np.zeros(image.shape, np.uint8)

cv2.imshow('image', image)
cv2.imshow('black', black)
cv2.waitKey(0)

例如带有测试图像。原始(左),结果(右)

答案 1 :(得分:0)

我建议您始终尝试操作图像的副本,以免图像以错误的方式受到影响。遇到您的问题,您可以执行以下操作:

import cv2

image = cv2.imread('test_image.png',0)

#Creating a copy of the image to confirm right operation is performed on the image.
image_copy = image.copy() 
image_copy[:,:] = [0] #Setting all values to 0.