目录

1. 前言1. 像素的访问1.1 数组索引访问1.2 img.item()

2. 像素的修改2.1 数值索引修改2.2 img.itemset()

1. 前言

像素是构成数字图像的基本单位,像素处理是图像处理的基本操作。 对像素的访问、修改,可以使用 Numpy 方法直接访问数组元素。

1. 像素的访问

1.1 数组索引访问

语法结构:

retval = img[row, col, cancel]

col:列索引row:行索引cancel:通道索引, 0 表示蓝色通道,1 表示绿色通道,2 表示红色通道retval:获取彩色图像中特定位置的一个颜色通道的值

import cv2

imgFile = "img/lena.jpg"

img1 = cv2.imread(imgFile, flags=1) # flags=1 读取彩色图像(BGR)

x = 0 # 列索引

y = 1 # 行索引

value = img1[x, y]

print(f"通道值: ({x}, {y}): {value}")

# 假设我们想要获取位于第10行第20列的红色通道值

x = 20 # 列索引

y = 10 # 行索引

i = 2 # 红色通道索引

# 获取红色通道的值

red_value = img1[y, x, i]

# 输出红色通道的值

print(f"红色通道值: ({x}, {y}): {red_value}")

1.2 img.item()

语法结构:

retval = img.item(row, col, cancel) #获取数组中单个元素的值

col:列索引row:行索引cancel:通道索引, 0 表示蓝色通道,1 表示绿色通道,2 表示红色通道retval:获取彩色图像中特定位置的一个颜色通道的值

import cv2

import numpy as np

# 读取彩色图像

img = cv2.imread('img/lena.jpg')

# 获取位于 (10, 20) 位置的像素的蓝色通道值

blue_value = img.item(10, 20, 0)

# 输出蓝色通道值

print(f"蓝色通道值 (10, 20): {blue_value}")

2. 像素的修改

2.1 数值索引修改

img[row, col, channel] = new_value

2.2 img.itemset()

语法结构:

img.itemset(row, col, channel, new_value) #用于设置数组中单个元素的值

col:列索引row:行索引cancel:通道索引, 0 表示蓝色通道,1 表示绿色通道,2 表示红色通道new_value:设置的新值

import cv2

import numpy as np

# 读取彩色图像

img = cv2.imread('img/lena.jpg')

# 将位于 (10, 20) 位置的像素的红色通道值设置为 255(白色)

img.itemset(10, 20, 2, 255)

# 注意:img.itemset() 没有返回值,它直接修改数组

# 如果需要,你可以使用 img.item(10, 20, 2) 来验证新值

new_red_value = img.item(10, 20, 2)

print(f"新红色通道值 (10, 20): {new_red_value}")

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: