如何在Python中按像素值修改像素?将灰度图值为90的像素涂蓝
用Python修改灰度图像中指定像素为蓝色的具体方法
准备工作:安装图像处理库
首先需要安装Pillow(Python常用的图像处理库,比旧版PIL更易用),打开命令提示符或终端,输入以下命令:
pip install pillow
方法一:适合新手的逐像素遍历法
这种方法逻辑直观,容易理解,适合小尺寸图像:
from PIL import Image # 1. 打开你的灰度图像,替换成实际图像路径(比如"test.jpg"或绝对路径) gray_img = Image.open("your_image.png") # 2. 获取图像的宽度和高度 width, height = gray_img.size # 3. 创建一个新的RGB格式图像(因为蓝色是三通道颜色,灰度图是单通道,无法直接设置) result_img = Image.new("RGB", (width, height)) # 4. 遍历每个像素位置 for x in range(width): for y in range(height): # 获取当前位置的灰度像素值(范围0-255) gray_value = gray_img.getpixel((x, y)) if gray_value == 90: # 像素值为90时,设置为蓝色(RGB值为(0, 0, 255)) result_img.putpixel((x, y), (0, 0, 255)) else: # 其他像素保持原灰度的RGB格式(三个通道值相同) result_img.putpixel((x, y), (gray_value, gray_value, gray_value)) # 5. 保存修改后的图像 result_img.save("modified_image.png")
方法二:高效的批量处理法(适合大图像)
如果你的图像尺寸较大,逐像素遍历会很慢,可以用numpy进行批量操作,速度快很多:
from PIL import Image import numpy as np # 1. 打开图像并转为灰度格式(如果原图像不是灰度图,必须加.convert("L")) gray_img = Image.open("your_image.png").convert("L") # 2. 将图像转为numpy数组,方便批量操作 img_array = np.array(gray_img) # 3. 创建RGB格式的数组,初始为原灰度的RGB值(三个通道复制原灰度值) rgb_array = np.stack([img_array, img_array, img_array], axis=2) # 4. 找到所有像素值等于90的位置 mask = img_array == 90 # 5. 将这些位置的像素设置为蓝色 rgb_array[mask] = [0, 0, 255] # 6. 将数组转回图像格式 result_img = Image.fromarray(rgb_array) # 7. 保存结果 result_img.save("modified_image_fast.png")
注意事项
- 确保图像路径正确:如果图像和代码文件在同一文件夹,直接写文件名即可;否则需要写完整的绝对路径(比如Windows下
C:\\Users\\xxx\\Desktop\\test.png,Linux/macOS下/home/xxx/Desktop/test.png)。 - 如果原图像不是灰度图,需要在打开时加上
.convert("L")转为灰度格式,比如gray_img = Image.open("your_image.png").convert("L")。
内容的提问来源于stack exchange,提问作者HermesTrimegisto
相关产品推荐
相关产品推荐

