当前位置: 首页 > 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.dtcms.com/a/342605.html

相关文章:

  • 软件漏洞扫描的测试内容(二)
  • DzzOffice V2.3.7 核心功能升级与关键问题修复,体验全面优化!
  • 计算机网络-1——第一阶段
  • 【苹果软件】Prism Mac 9.4苹果系统免费安装包英文版 Graphpad Prism for Mac 9.4软件免费下载与详细图文教程!!
  • UGUI源码剖析(12):实战演练——从零构建一个健壮的Gradient顶点特效
  • 虚幻基础:目标值之间的过渡
  • 数字货币发展存在的问题:交易平台的问题不断,但监管日益加强
  • C++ string类(c_str , find和rfind , npos , find_first_of)
  • DeepSeek V3.1正式发布,专为下代国产芯设计
  • 【LeetCode 热题 100】322. 零钱兑换——(解法二)自底向上
  • 2025年物流大数据分析的主要趋势
  • 血缘元数据采集开放标准:OpenLineage Dataset Facets
  • Python-Pandas GroupBy 进阶与透视表学习
  • 如何用算力魔方4060安装PaddleOCR MCP 服务器
  • 实现自己的AI视频监控系统-第一章-视频拉流与解码3
  • JavaWeb前端03(Ajax概念及在前端开发时应用)
  • Windows下,将本地视频转化成rtsp推流的方法
  • 高效处理NetCDF文件经纬度转换:一个纯CDO驱动的Bash脚本详解
  • GitHub 热榜项目 - 日榜(2025-08-21)
  • 009.Redis Predixy + Sentinel 架构
  • 深度卷积神经网络AlexNet
  • 【NVIDIA-B200】生产报错 Test CUDA failure common.cu:1035 ‘system not yet initialized‘
  • Docker 搭建 Gitlab 实现自动部署Vue项目
  • NW755NW776美光固态闪存NW863NX595
  • 【永洪BI】报告脚本-JavaScript使用【完整版】
  • Vue 项目中父子传值使用Vuex异步数据不更新问题
  • Postman来做API安全测试:身份验证缺陷漏洞测试
  • 药品追溯码(溯源码)采集系统(二):门诊发药后端
  • 【Linux系统】进程信号:信号的产生和保存
  • 使用EasyExcel 导出复杂的合并单元格