呀哈!Python实现萌萌的Chiikawa(素描版)

技术

点击蓝字

picture.image

关注我们

FOCUS ON US

PART1

写在前面

哈?呀哈!

本期小编给大家带来一个实用的干货

——素描转换器

主人公当然是我们可爱的

吉伊小八 以及 乌萨奇 啦~

picture.image

PART2

Chiikawa小小可爱

picture.image

《Chiikawa》是一部来自日本的超萌治愈系漫画与动画作品,由作者秋田祯信创作。"Chiikawa"这个名字结合了日语中的“ちい”(小)和“かわ”(可爱)两个词,直译就是“小小可爱”,非常贴合作品的精髓。这部作品围绕着一群外形软萌、个性鲜明的小动物展开,它们有着圆滚滚的身体、大大的眼睛,看起来就像是迷你版的宠物或是野生动物,非常可爱!

picture.image

故事中,这些小动物们拥有自己的一片小天地,它们的生活充满了乐趣和温馨。从日常的嬉戏打闹到互相帮助解决问题,每个场景都充满了正能量和纯真情感,让人看了不禁会心一笑,心情大好。《Chiikawa》没有复杂的剧情,而是以简单、轻松的方式展现了友情、亲情以及对生活的热爱,非常适合各年龄层的观众,尤其是寻求心灵慰藉和放松的人群。

picture.image

总之,《Chiikawa》是一部让人感到温暖、治愈的作品,通过这些迷人的小生物,传递出简单却深刻的快乐哲学,提醒我们在繁忙的生活中也不要忘记感受身边的小小幸福。

PART3

Python编程语言

简介

Python 是一种高级、通用的编程语言,由荷兰程序员 Guido van Rossum 设计,并于1989年底首次发布。 Python 的命名灵感来源于 Guido van Rossum 喜爱的英国喜剧团体Monty Python,而非爬行动物蟒蛇,尽管 Python 的logo采用了两条蟒蛇的形象。

特性

Python 强调代码的可读性和简洁性,它使用简单的语法结构,使非专业的程序员也非常容易上手。作为一种解释型语言, Python 的代码在运行时由解释器逐行解释执行,无需事先编译。这使得 Python 非常适合作为脚本语言使用,同时也便于快速开发和调试。

特点

  1. 简洁易读 :Python的语法设计鼓励编写清晰、逻辑性强的代码,使用空白符来区分代码块,而不是像C、C++等语言那样使用大括号{}。
  2. 动态类型 :Python是动态类型语言,变量不需要预先声明类型,可以在运行时改变类型,这大大提高了编程的灵活性。
  3. 面向对象 :支持面向对象编程(OOP),允许通过定义类和对象来组织代码,实现封装、继承和多态等特性。
  4. 丰富的标准库 :Python自带一个庞大而全面的标准库,覆盖了网络通信、文本处理、数据库访问、图形用户界面等多个领域,极大地方便了开发者。
  5. 跨平台性 :Python可在多种操作系统上运行,包括Windows、Linux、Mac OS等,且代码通常无需修改即可在不同平台上运行。
  6. 应用广泛 :Python在Web开发、数据分析、人工智能、机器学习、科学计算、自动化脚本、网络安全等领域有着广泛的应用。
  7. 社区支持 :Python拥有一个庞大的开发者社区,提供了大量的第三方库和框架,以及丰富的在线资源和文档,支持开发者的学习和项目开发。

小结

由于其易学易用的特点, Python 也常被视为 编程新手 的理想入门语言。随着版本的不断更新, Python 持续引入新功能,优化性能,进一步巩固了其在现代软件开发中的地位。

PART4

素描Chiikawa

完整代码


                    
from PIL import Image
                    
import os
                    
def transform(imgName):
                    
    image = imgName
                    
    img = Image.open(image)
                    
    img_all = "素描" + image
                    
    new = Image.new("L", img.size, 255)
                    
    width, height = img.size
                    
    img = img.convert("L")
                    
    Pen_size = 3
                    
    Color_Diff = 6
                    
    for i in range(Pen_size + 1, width - Pen_size - 1):
                    
        for j in range(Pen_size + 1, height - Pen_size - 1):
                    
            # 原始的颜色
                    
            originalColor = 255
                    
            lcolor = sum([img.getpixel((i - r, j)) for r in range(Pen_size)]) // Pen_size
                    
            rcolor = sum([img.getpixel((i + r, j)) for r in range(Pen_size)]) // Pen_size
                    
            if abs(lcolor - rcolor) > Color_Diff:
                    
                originalColor -= (255 - img.getpixel((i, j))) // 4
                    
                new.putpixel((i, j), originalColor)
                    
            ucolor = sum([img.getpixel((i, j - r)) for r in range(Pen_size)]) // Pen_size
                    
            dcolor = sum([img.getpixel((i, j + r)) for r in range(Pen_size)]) // Pen_size
                    
            if abs(ucolor - dcolor) > Color_Diff:
                    
                originalColor -= (255 - img.getpixel((i, j))) // 4
                    
                new.putpixel((i, j), originalColor)
                    
            acolor = sum([img.getpixel((i - r, j - r)) for r in range(Pen_size)]) // Pen_size
                    
            bcolor = sum([img.getpixel((i + r, j + r)) for r in range(Pen_size)]) // Pen_size
                    
            if abs(acolor - bcolor) > Color_Diff:
                    
                originalColor -= (255 - img.getpixel((i, j))) // 4
                    
                new.putpixel((i, j), originalColor)
                    
            qcolor = sum([img.getpixel((i + r, j - r)) for r in range(Pen_size)]) // Pen_size
                    
            wcolor = sum([img.getpixel((i - r, j + r)) for r in range(Pen_size)]) // Pen_size
                    
            if abs(qcolor - wcolor) > Color_Diff:
                    
                originalColor -= (255 - img.getpixel((i, j))) // 4
                    
                new.putpixel((i, j), originalColor)
                    
    new.save(img_all)
                    
    os.system(img_all)
                    
if __name__ == '__main__':
                    
    imageName = "Chiikawa.jpg"
                    
    transform(imageName)
                

代码分析

这段代码定义了一个名为 transform() 的函数,用于将一个彩色图像转换成素描风格的灰度图像,以下是代码的详细分析。

  1. 导入库

首先,代码导入了 PIL库 中的 Image模块 以及 os模块PIL库 用于处理图像,而 os模块 则用于与操作系统交互,比如执行系统命令。 2. 转换函数

  • 函数 transform() 接受一个参数 imgName ,即待转换图像的文件名。

  • 首先,尝试打开并读取图像文件。

  • 创建一个新的空白灰度图像 new ,尺寸与原图相同,初始填充为白色。

  • 获取原图的尺寸,并将其转换为灰度图像。

  • 设置画笔大小 Pen_size 和色差扩散器 Color_Diff 作为算法的参数。

  1. 像素处理
  • 使用嵌套的 for循环 遍历图像中的每个像素,但避开了边缘像素以避免越界问题。
  • 对每个像素,计算其周围区域的平均亮度值(上、下、左、右、对角线方向),并比较这些平均值之间是否存在显著差异 Color_Diff
  • 如果存在显著差异,则根据原始像素亮度减少一定的值并设置到新图像的对应位置,以此来增强边缘和轮廓,模拟素描效果。
  1. 保存结果
  • 将处理后的图像保存为新的文件,文件名前缀为“素描”。
  • 利用 os.system() 命令直接在操作系统中打开转换后的图像。
  1. 主函数 当脚本作为主程序运行时,会调用 transform() 函数并传入一个示例图像文件名“ Chiikawa.jpg ”。

注意事项

代码中的素描效果实现方式基于一种简化的算法,它通过对比像素周围区域的亮度差异来模拟铅笔素描的线条和阴影效果。

使用 os.system() 直接打开图片可能在某些环境下不适用,特别是没有默认图片查看器或者跨平台兼容性问题。

对于更高质量的素描转换,可以考虑使用更复杂的图像处理技术,如边缘检测、高斯模糊结合二值化等方法。

运行效果

picture.image

下载代码

公众号内回复 python036

领取完整代码哈~

PART5

系列推荐

更多精彩

序号文章目录直达链接
表白系列
1无限弹窗代码无限弹窗!满屏表白代码来啦,快来看看吧
2满屏飘字代码
满屏飘字表白代码(Python版)
3李峋同款跳动的爱心Python李峋同款跳动的爱心代码(可写字版)
4漂浮爱心Python满屏漂浮爱心代码
5爱心光波
Python动感爱心光波代码

| | 6 | 流星雨 | 一起来看python流星雨吧!(含表白界面) | | 7 | 玫瑰花 | 叮咚,您的玫瑰花已送达~ | | 节日系列 | | 1 | 生日蛋糕 | Python与众不同的生日蛋糕(可定制版) | | 2 | 圣诞节 | Python画一棵浪漫的圣诞树(2022)

Python粉红色圣诞树(慢慢画版)

从天而降的Python圣诞礼物(可写字版)

| | 3 | 中秋节 | 中秋佳节将至,一起来赏月吧 | | 4 | 国庆节 | 目光所至皆华夏,五星闪耀为信仰 | | 5 | 儿童节 | 让代码创造童话,共建快乐世界 | | 6 | 万圣节 | 终于要到我这只可爱鬼的节日啦! | | 7 | 新春/跨年 | 动漫风Python跨年烟花秀(可换照片

今年跨年一起去看python烟花秀吧!

| | 动漫系列 | | 1 | 柯南 | 真相只有一个!名侦探柯南来袭~ | | 2 | 皮卡丘 | 我用python实现了三只可爱的皮卡丘! | | 3 | hellokitty | 粉红色限定丨你好我是HelloKitty! | | 4 | 猪猪侠 | Python绘制猪猪侠代码 | | 5 | 沸羊羊 | 叮咚,您订购的沸羊羊已送达 | | 6 | 喜羊羊 | 我用python实现了一只呆萌的喜羊羊!

| | 7 | 懒羊羊 | 教你用python实现一只可爱的懒羊羊!

| | 8 | 小灰灰 | 谁会拒绝一只呆萌的小灰灰呢~ | | 其他 | | 1 | 满天星 | 一闪一闪亮晶晶,跨年就看林北星(Python) | | 2 | 雪花 | 陪你看一场冬雪(大雪纷飞Python版

这个冬天让我们用python送她一场飘雪吧!

张万森,下雪了(Python)

| | 3 | 樱花树 | 樱花树下的约定,是承诺也是青春 | | 4 | 七彩花朵 | Python七彩花朵代码 | | 5 | 代码雨 | 三十行代码教你实现《黑客帝国》炫酷代码雨 | | 6 | 蝙蝠代码 | 万圣节特辑(一)丨 一只蝙蝠的诞生! | | 7 | 南瓜头 | 万圣节特辑(二)丨 你好恶魔南瓜头! |

逛逛主页

PART6

写在最后

最后想说

我是一只 有趣的兔子 ,感谢你的 点赞

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论