如何使用 OpenCV Python 访问和修改图像中的像素值?


要访问图像中的单个像素值,我们可以使用与 NumPy 数组索引相同的索引方式。我们可以使用切片来访问一系列像素值。要修改像素值,我们使用简单的 Python 赋值运算符(“=”)。

步骤

要访问和修改图像中的像素值,我们可以按照以下步骤操作:

  • 导入所需的库。在以下所有示例中,所需的 Python 库为 **OpenCV**。确保您已安装它。

  • 使用 **cv2.imread()** 读取输入 **RGB** 图像。使用此方法读取的 RGB 图像为 BGR 格式。可以选择将读取的 BGR 图像分配给 img。

  • 要访问单个像素,请使用索引;要修改单个像素值,请对索引进行赋值。例如,要将 [200,150] 处的像素值修改为红色,我们应用

img[200,150] = (0, 0, 255)
  • 要访问一系列像素,请使用切片;要修改这些像素值,请对切片进行赋值。例如,要将 [100:300,150:350] 处的像素值修改为红色,我们应用

img[100:300,150:350] = (0, 0, 255)

我们将在以下示例中使用此图像作为 **输入文件**。


示例

在这个 Python 程序中,我们访问输入图像中某个点的像素值。我们还查找三个不同颜色通道的像素值,并修改该点红色通道的像素值。

# program to access and modify a pixel value # import required libraries import cv2 # read the input image img = cv2.imread('horizon.jpg') # access pixel values using indexing print("pixel value at [200,150]:", img[200,150]) print("pixel value blue channel at [200,150]:", img[200,150][0]) print("pixel value green channel at [200,150]:", img[200,150][1]) print("pixel value red channel at[200,150]:", img[200,150][2]) # modify the pixel value at [200,150] for red color channel img[200,150] = (0, 0, 255) print("after modifying pixel value at [200,150]:", img[200,150])

输出

运行上述程序时,将生成以下输出:

pixel value at [200,150]: [115 192 254]
pixel value blue channel at [200,150]: 115
pixel value green channel at [200,150]: 192
pixel value red channel at [200,150]: 254
after modifying pixel value at [200,150]: [ 0 0 255]

示例

在这个 Python 程序中,我们访问输入图像中某个区域的像素值。我们还将这些像素值修改为红色。

# program to access and modify the pixel values of a region # import required libraries import cv2 # read the input image img = cv2.imread('horizon.jpg') # access pixel values using indexing and slicing # modify pixel color of a region to red color img[100:300,150:350] = (0, 0, 255) # display the modified image cv2.imshow('Modified Image', img) cv2.waitKey(0) cv2.destroyAllWindows()

输出

运行上述程序时,将生成以下输出:


注意修改像素值为红色后的输出图像。

更新于: 2022年12月2日

14K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告