当前位置: 首页 > news >正文

Python读取和设置PNG图片的像素值

Python中,可以使用Pillow库或OpenCV库来读取和写入PNG图片的像素值。以下是两种方法的详细说明:

1. 使用Pillow

PillowPython中常用的图像处理库,支持多种图像格式,包括PNG

读取像素值

from PIL import Image

img = Image.open('example.png')

# 获取像素值

pixels = img.load()

# 读取某个像素的值(坐标为x, y)

x, y = 100, 100

pixel_value = pixels[x, y]

print(pixel_value)  # 输出像素值(RGB或RGBA)

写入像素值

from PIL import Image

img = Image.open('example.png')

pixels = img.load()

# 修改某个像素的值(坐标为x, y)

x, y = 100, 100

pixels[x, y] = (255, 0, 0)  # 设置为红色

# 保存修改后的图片

img.save('modified.png')

2. 使用OpenCV

OpenCV是一个强大的计算机视觉库,也支持PNG图像的读写。

读取像素值

import cv2

# 读取PNG图片

img = cv2.imread('example.png', cv2.IMREAD_UNCHANGED)  # 保留Alpha通道

# 读取某个像素的值(坐标为y, x)

y, x = 100, 100

pixel_value = img[y, x]

print(pixel_value)  # 输出像素值(BGR或BGRA)

写入像素值

import cv2

# 读取PNG图片

img = cv2.imread('example.png', cv2.IMREAD_UNCHANGED)

# 修改某个像素的值(坐标为y, x)

y, x = 100, 100

# 安全的像素写入方式(确保通道数匹配)

if len(img[y, x]) == 3# 3通道图像

    img[y, x] = [0, 0, 255]

elif len(img[y, x]) == 4# 4通道图像(带Alpha

    img[y, x] = [0, 0, 255, 255# 添加Alpha通道值

# 保存修改后的图片

cv2.imwrite('modified.png', img)

注意事项

  1. 坐标顺序‌:Pillow使用(x, y),而OpenCV使用(y, x)。
  2. 颜色通道‌:Pillow默认使用RGB,OpenCV默认使用BGR。
  3. Alpha通道‌:PNG可能包含透明度通道(Alpha),处理时需注意。
http://www.xdnf.cn/news/1342153.html

相关文章:

  • MFC随笔—不使用对话框资源模板创建对话框
  • Effective C++ 条款54:熟悉标准库
  • 【lucene】lucene常用查询一览
  • python 项目编号 2025821 有关于中英文数据的收集、处理
  • 数据结构之排序大全(3)
  • Python数据可视化利器:Matplotlib从入门到实战全解析
  • C ++代码学习笔记(一)
  • TDengine IDMP 运维指南(常见问题)
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(18):文法+单词第6回1
  • 虚幻基础:曲线
  • 基于STM32单片机的二维码识别物联网OneNet云仓库系统
  • 图--常见面试问题
  • 从源码中学习Java面向对象的多态
  • 多级缓存一致性矩阵:ABP vNext 下的旁路 / 写穿 / 写回组合实战
  • MiniGPT-4
  • FPGA 在情绪识别领域的护理应用(三)
  • 机器学习1
  • 结合 Flutter 和 Rust 的跨平台开发方案
  • Vibe Coding v.s Prompt Engineering
  • 数据库面试常见问题
  • gsplat在windows本地部署
  • Dockerfile
  • Claude Code 已支持【团队版】和【企业版】订阅
  • Webpack的使用
  • 15. 多线程(进阶2) --- CAS 和 多线程常用的类
  • Mokker AI:一键更换照片背景的AI神器
  • 粗粮厂的基于flink的汽车实时数仓解决方案
  • selenium一些进阶方法如何使用
  • K8s快速上手-微服务篇
  • 机器学习中的聚类与集成算法:从基础到应用