【问题标题】:How to change specific pixel value in grayscale image?如何更改灰度图像中的特定像素值?
【发布时间】:2019-06-19 04:50:48
【问题描述】:

我想使用 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

结果:

显示更新后的图片

【问题讨论】:

  • 我相信语法是image[i][j] = 0。此外,您不应该留下诸如 cmets 之类的信息。您应该编辑您的帖子以包含详细信息
  • Atul,请edit 完成您的问题。您似乎发布得太早并试图在评论中完成您的问题。这不是 cmets 的用途。

标签: python opencv computer-vision grayscale


【解决方案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)

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

【讨论】:

    【解决方案2】:

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

    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.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2012-06-01
      • 2015-06-08
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多