获取并修改图像中的像素点

实现原理

我们可以通过行和列的坐标值获取该像素点的像素值。对于BGR图像,它返回一个蓝,绿,红值的数组。对于灰度图像,仅返回相应的强度值。使用相同的方法对像素值进行修改。

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

#绘制一个全黑的图像
img = np.zeros((256,256,3),np.uint8)   #创建图像时要指定类型为uint8

'''
创建一个名为img的NumPy数组,该数组是一个形状为(256, 256, 3)的多维数组,数据类型为np.uint8,表示8位无符号整数。这个数组被初始化为全零,因此它是一个全黑的图像。
它的形状是高度256像素,宽度256像素,通道数3(对应于RGB颜色通道)。

'''

plt.imshow(img[:,:,::-1])
'''
plt.imshow(img[:,:,::-1]): 使用Matplotlib的imshow函数来显示图像。
img[:,:,::-1]是一个NumPy切片,用于反转RGB颜色通道的顺序,因为Matplotlib默认使用RGB顺序,而OpenCV使用BGR顺序。
'''
plt.show()

#获取某个像素点的值
px = img[100,100]
#这一行代码用于获取图像 img 中坐标为 (100, 100) 的像素值。
# px 将是一个包含该像素点 RGB 颜色通道值的 NumPy 数组。
print(px)

#仅获取蓝色通道的强度值
blue = img[100,100,0]
#这一行代码从坐标 (100, 100) 的像素中获取蓝色通道 (通道索引 0) 的强度值。
# 这将是一个介于 0 到 255 之间的整数,表示蓝色通道的强度。

#修改某个位置的像素值
img[100,100] = [255,255,255]
#这一行代码将图像中坐标为 (100, 100) 的像素的颜色值修改为白色。
# [255, 255, 255] 表示白色,其中每个通道的强度值都为 255(红、绿、蓝通道都设置为最大值),因此这个像素将变为白色。

plt.imshow(img[:,:,::-1])
plt.show()

运行结果:

相当于把坐标【100,100】位置的点由[0,0,0]黑色 改成 [255,255,255] 白色
获取并修改图像中的像素点_第1张图片
获取并修改图像中的像素点_第2张图片

你可能感兴趣的:(OpenCV从入门到精通,opencv,python)