簡體   English   中英

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

[英]How to change specific pixel value in grayscale image?

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

結果:

顯示更新的圖像

在大多數情況下,您希望避免使用雙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)

例如,帶有測試圖像。 原件(左),結果(右)

我建議你總是嘗試操作圖像的副本,這樣圖像就不會以錯誤的方式受到影響。 提出您的問題,您可以執行以下操作:

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.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM