我想使用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
结果:
答案 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.