修改像素值
通过索引直接修改像素值:
修改单个像素
image[100, 100] = [255, 0, 0] # 将 (100, 100) 位置的像素值改为蓝色
修改一块区域(ROI)
image[50:150, 50:150] = [0, 255, 0] # 将 (50,50)-(150,150) 的区域填充为绿色
使用 item()
和 itemset()
操作单个像素值
item()
和 itemset()
提供更底层、更精确的操作:
python复制代码# 读取像素值
blue = image.item(100, 100, 0) # 获取 (100, 100) 的蓝色通道值
print(f"Blue value: {blue}")
# 修改像素值
image.itemset((100, 100, 0), 128) # 将蓝色通道值设置为 128
print(f"Modified Blue value: {image.item(100, 100, 0)}")
图像取反色
- 图像在 OpenCV 中是一个 NumPy 数组,每个像素用数组的一个元素表示:
- 灰度图像:单通道,每个像素值是 0-255 的整数。
- 彩色图像:三通道,每个像素用一个包含 3 个值的数组表示(BGR)。
- 透明图像:四通道,包含额外的 Alpha 通道。
def pixel_demo():
image = cv.imread('images/test.png')
if image is None:
print("Error: Image not found or failed to load.")
return
h,w,c = image.shape
for i in range(h):
for j in range(w):
b,g,r = image[i,j]
image[i,j] = (255-b,255-g,255-r)
cv.imshow('image', image)
cv.waitKey()
cv.destroyAllWindows()
不只能够设置反色,还可以指定某个通道为0或者无变化,实现滤镜的效果。
像素值的统计
可以利用 NumPy 提供的函数对图像进行快速统计分析:
import numpy as np
# 最大值、最小值
min_val, max_val = np.min(image), np.max(image)
print(f"Min Pixel Value: {min_val}, Max Pixel Value: {max_val}")
# 平均值
mean_val = np.mean(image)
print(f"Mean Pixel Value: {mean_val}")
© 版权声明
转载请注明出处,并标明原文链接。
本网站尊重知识产权,如有侵权,请及时联系我们删除。
本站所有原创内容仅用于学习和交流目的,未经作者和本站授权不得进行商业使用或盈利行为。
本网站尊重知识产权,如有侵权,请及时联系我们删除。
本站所有原创内容仅用于学习和交流目的,未经作者和本站授权不得进行商业使用或盈利行为。
THE END
暂无评论内容