OpenCV-Python快速入门系列04图像像素的读写操作

修改像素值

通过索引直接修改像素值:

修改单个像素
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()
图片[1]-OpenCV-Python快速入门系列04图像像素的读写操作-天煜博客

不只能够设置反色,还可以指定某个通道为0或者无变化,实现滤镜的效果。

图片[2]-OpenCV-Python快速入门系列04图像像素的读写操作-天煜博客

像素值的统计

可以利用 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
喜欢就支持一下吧
点赞6 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容