如何获取整张图像的RGB值 已实现逐像素RGB值打印功能
OpenCV获取整张图像RGB值的实现方案
- OpenCV的
cv2.imread接口默认读取的图像通道顺序为BGR,和标准RGB通道顺序相反,直接打印img[i,j]得到的是BGR值,需要转换后才能得到正确的RGB值 - 你现有代码的循环范围设置为
range(1,x-1)、range(1,y-1),会丢失边缘的首行、末行、首列、末列像素,无法获取整张图像的所有像素值
实现方案
方案1:直接获取整张图像的RGB数组
无需循环遍历,直接通过通道转换得到全图的RGB三维数组,代码如下:
import cv2 # 读取图像 img_bgr = cv2.imread("tiger.jpg") # 转换BGR通道为RGB通道,得到全图RGB数组 img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB) # 验证信息 print(f"图像参数(高度,宽度,通道数):{img_rgb.shape}") print(f"左上角首个像素的RGB值:{img_rgb[0,0]}") # 直接输出整张图像的所有RGB值 print(img_rgb)
img_rgb是形状为(图像高度, 图像宽度, 3)的numpy数组,每个位置的三个元素依次对应该坐标像素的R、G、B通道值,取值范围为0~255,你可以直接对这个数组做后续处理。
方案2:遍历打印所有像素的RGB值
如果需要逐个打印每个像素的RGB值,调整循环范围覆盖全部像素即可:
x, y, z = img_rgb.shape count = 0 for i in range(x): for j in range(y): print(f"第{count+1}个像素RGB值:{img_rgb[i,j]}") count += 1
内容的提问来源于stack exchange,提问作者Eissa Faheem
相关产品推荐
相关产品推荐

