少儿编程——Python如何讲一张输入图片改成素描风

文章讲述了如何使用Python和PIL库将彩色图片转换为铅笔画风格的过程,包括步骤如黑白转换、颜色反转、模糊处理和颜色减淡,同时提到了在处理过程中遇到的除以零问题及其解决方案。作者对当前四岁小孩就开始学习编程的现象表示惊讶。
摘要由CSDN通过智能技术生成

昨天去妈妈的一个朋友家里做客,看到阿姨的10岁的孩子在上编程课,感觉挺有意思的,就听了听,感觉很有意思

题目

题目就是要把一张正常输入的照片转换成素描风。

步骤

白话步骤

  1. 将彩色图片转换为黑白图片
  2. 将图片颜色反转
  3. 将图片进行模糊处理
  4. 将模糊后的图像颜色反转
  5. 进行颜色减淡操作

步骤

  1. 将原图色域空间转换为"L"
  2. 反转图片颜色
  3. 对图片应用高斯模糊
  4. 将高斯模糊后的图片再次反转
  5. 进行颜色减淡操作

代码

from PIL import Image, ImageOps, ImageFilter

# 读取并转换图像
original_image = Image.open("E:\\images\\10.jpeg")
gray_image = original_image.convert("L")

# 反转并模糊图像
inverted_image = ImageOps.invert(gray_image)
blurred_image = inverted_image.filter(ImageFilter.GaussianBlur(8))  # 8是模糊半径

# 获取图像数据
gray_pixels = gray_image.load()
blurred_pixels = blurred_image.load()

# 创建一个新的图像用于输出
width, height = gray_image.size
sketch_image = Image.new("L", (width, height))
sketch_pixels = sketch_image.load()

# 使用循环处理每个像素
for x in range(width):
    for y in range(height):
        # 获取原始灰度图像和模糊图像的像素值
        base_pixel = gray_pixels[x, y]
        blend_pixel = blurred_pixels[x, y]

        # 应用颜色减淡效果
        if blend_pixel == 255:
            sketch_pixels[x, y] = 255
        else:
            sketch_pixels[x, y] = min(255, int(base_pixel + base_pixel * blend_pixel / 255))

# 显示和保存图像
sketch_image.show()
sketch_image.save("E:\\images\\10_sketch.jpg")

在铅笔画效果的颜色减淡算法中,当模糊图像的像素为255时,按照颜色减淡的公式,会导致除以零的情况(因为减淡公式中有一个 1 - Blend Color 的部分,当 Blend Color 为255时,这部分等于零)。为了避免这种除以零的错误,直接将结果像素值设为255,即最亮的白色,这样可以保证算法的稳定性和输出图像的正确性。

现在已经内卷到这种地步了吗,四年级的小朋友就已经开始写代码了,这也太可怕了吧😭😭😭

  • 15
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值