【教学类-38】20230724京剧脸谱涂色(Python 彩图彩照转素描线描稿)

一、作品预览

京剧脸谱(涂色)学具展示(64份)

 

二、背景需求:

1、大班主题《我是中国人》里面有一个“京剧脸谱”的子主题。从网上下载的彩色脸谱(红黄绿蓝紫黑白),作为环境装饰。引导幼儿了解“脸谱色彩和人物性格”。

2、2023年9月开始幼儿园购买“梨园梦”的体验课程,6月培训课中,导师展示了幼儿照着范例在“京剧脸谱线描稿”上涂色的 一款学具,当时听到同事私语:“这一本也就几个人物能涂色,不够画啊!”

3、由于不确定是一班一套,还是每个孩子人手一套。所以我很想为孩子提供更多数量的“脸谱涂色”材料,作为个别化美工区学习材料。

4、网上有大量的彩色京剧脸谱彩色图案,也有少量的黑白线描脸谱,但是很难找到一套“有彩图又有线描稿的脸谱”,大部分线描稿京剧脸谱需要到淘宝购买。同时大部分脸谱没有备注,我也不知道它是哪位京剧人物,出自那一部京剧。

三、解决策略:

通过百度图片,搜索到“堆糖”上的一套京剧脸谱,不仅有人物名字和京剧名称,而且数量众多(实际下载468张), 

脸谱人物名字和京剧名称的文字附在脸谱图片上

 把467张脸谱下载(使用UIBOT,放大图片,读取“图片上的文字信息”,另存为“三位数序号+人物名字+京剧名称.jpeg

(文字识别度有误差,全部下载后,还需要对着脸谱图片上的文字手动修改图片的文件名字,有几个生僻字还需要网络搜搜读音)

(花了2天才全部下载完,调整号名字)

 四、素材准备:

彩色脸谱

 线描脸谱(空)

 五:“彩图 转 线描图”的代码展示

# https://blog.csdn.net/weixin_44421798/article/details/113027414?ops_request_misc=&request_id=&biz_id=102&utm_term=Python%EF%BC%8C%E7%85%A7%E7%89%87%E4%B8%80%E9%83%A8%E5%88%86%E6%8F%8F%E8%BE%B9&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-113027414.142^v90^control_2,239^v3^insert_chatgpt&spm=1018.2226.3001.4187'''将彩色脸谱转化为线描脸谱(黑白线条)'''from PIL import Image
import osimport os
from PIL import Image pathall=[]
p=r"C:\Users\jg2yXRZ\OneDrive\桌面\脸谱涂色\01序号脸谱有色彩PNG"
# 过滤:只保留png结尾的图片
imgs=os.listdir(p)
for img in imgs:if img.endswith(".jpeg"):pathall.append(p+'\\'+img)
# 所有图片的路径
print(pathall)
print(imgs)for dz in range(len(pathall)):# 图像组成:红绿蓝  (RGB)三原色组成    亮度(255,255,255)image =pathall[dz]img = Image.open(image)new = Image.new("L", img.size, 255)width, height = img.sizeimg = img.convert("L")# 定义画笔的大小Pen_size = 3# 色差扩散器Color_Diff = 6for i in range(Pen_size + 1, width - Pen_size - 1):for j in range(Pen_size + 1, height - Pen_size - 1):# 原始的颜色originalColor = 255lcolor = sum([img.getpixel((i - r, j)) for r in range(Pen_size)]) // Pen_sizercolor = 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))) // 4new.putpixel((i, j), originalColor)ucolor = sum([img.getpixel((i, j - r)) for r in range(Pen_size)]) // Pen_sizedcolor = 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))) // 4new.putpixel((i, j), originalColor)acolor = sum([img.getpixel((i - r, j - r)) for r in range(Pen_size)]) // Pen_sizebcolor = 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))) // 4new.putpixel((i, j), originalColor)qcolor = sum([img.getpixel((i + r, j - r)) for r in range(Pen_size)]) // Pen_sizewcolor = 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))) // 4new.putpixel((i, j), originalColor)new.save(r"C:\Users\jg2yXRZ\OneDrive\桌面\脸谱涂色\02序号脸谱无色线描PNG\{}".format(imgs[dz]))# i = os.system('mshta vbscript createobject("sapi.spvoice").speak("%s")(window.close)' % '您的图片转换好了')# os.system(img_save)

终端展示

说明: 转换比较慢:

(1)一张彩色脸谱转线描脸谱的转换时间:37秒

(2) 预计:268张用时2小时45分16秒(2023年7月24日18:00:00-20:45:16)

(3)实际:2023年7月24日

18点00分—21点19分:下载149张

18点00分—23点09分:下载306张

 

 

(中间中断15分钟,实际运行速度不都是37秒一张)

太晚了,明天继续下载

(4)实际:2023年7月25日

8点07分—11点54分:306开始,下载167张(共473张)

 

 

 

 

 

说明:因为要检测图案中色块与色块的边缘线条(色差检测)并补充黑灰线条(线描),所以彩色图片转换线描稿非常费时,尽量不要用几百张图片转换。

六、代码选择的特别说明:

我需要涂色脸谱,前期测试“消除彩色”、“黑白灰”的两个代码(运行速度很快),效果不佳,因在第三次选择了“彩图转素描的代码”(色块边缘线检测线条,所以费时)

测试1:“图案去除彩色”

结果:图案保留了所有含黑色的线条、块面,不是黑色的轮廓线也消失了

测试2:“图案转(黑白)灰色”

结果:脸谱外形保留,出现没有彩色的黑白灰效果。但能够涂色的地方少(都被黑色、灰色覆盖)打印起来也浪费墨水。

测试3(最终效果):“图案转素描(线描)”

结果:脸谱保留所有的线条(描边3磅),而且深色块面颜色也被清除了,完全符合块面涂色的需求!

 七、制作脸谱学具:

材料准备:

  图片 文件夹1

  图片 文件夹2 

 彩色脸谱的数量和线描脸谱的数量要一致(468张),制作学具时,需要按编号一一对应。

WORD模板

“彩色脸谱+线描脸谱”组合学具的代码展示:

# -*- coding: utf-8 -*-
'''
目的:
1、京剧脸谱彩色和黑白对应,制作涂色学具 一共468张,
2、作者:阿夏
时间:2023年7月24日)'''import os# num=int(input('生成多少份(28人)\n'))
# Number=4print('----------第1步:提取所有的京剧脸谱的路径------------')# 有颜色的 彩色脸谱
path1=[]
p1=r"C:\Users\jg2yXRZ\OneDrive\桌面\脸谱涂色\01序号脸谱有色彩PNG"
# 过滤:只保留png结尾的图片
imgs1=os.listdir(p1)
for img1 in imgs1:if img1.endswith(".jpeg"):path1.append(p1+'\\'+img1)
# 所有图片的路径
print(path1)
print(imgs1)# 没有有颜色的 黑白脸谱
path2=[]
# 有颜色的
p2=r"C:\Users\jg2yXRZ\OneDrive\桌面\脸谱涂色\02序号脸谱无色线描PNG"
# 过滤:只保留png结尾的图片
imgs2=os.listdir(p2)
for img2 in imgs2:if img2.endswith(".jpeg"):path2.append(p2+'\\'+img2)
# 所有图片的路径
print(path2)
print(imgs2)# print('----------第2步:新建一个临时文件夹------------')
# # 新建一个”装N份word和PDF“的文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\脸谱涂色\零时Word')print('----------第3步:随机抽取12张图片 ------------')import docx
from docx import Document
from docx.shared import Pt 
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
import randomimport os,time
import docx
from docx import Document
from docx.shared import Inches,Cm,Pt
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qnfrom docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColorfor nn in range(0,len(path2)):    doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\脸谱涂色\脸谱涂色左右测试.docx')
#     # 制作列表    
#     for z in range(2):        # 5行组合循环2次 每页两张表# # # 23个图形随机抽取12个# # figure=random.sample(path,Number)    # 12个图片随机写入4个           # # print(figure)# # 路径  ['C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\脸谱涂色\\脸谱涂色png\\08特警_3.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\脸谱涂色\\脸谱涂色png\\08特警_2.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\脸谱涂色\\脸谱涂色png\\06士兵2_1.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\脸谱涂色\\脸谱涂色png\\20医生_1.png']# # 提取名称# title=[]# for t in figure:#     tt=t[44:-6]#     title.append(tt)# # 路径  ['C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\脸谱涂色\\脸谱涂色png\\08特警_3.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\脸谱涂色\\脸谱涂色png\\08特警_2.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\脸谱涂色\\脸谱涂色png\\06士兵2_1.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\脸谱涂色\\脸谱涂色png\\20医生_1.png']# print(title)      table = doc.tables[0]          # 只有一个表格# 帖图片的单元格# bg1=['00','01']# for t1 in range(len(bg1)):   # 02#     pp1=int(bg1[t1][0:1])    #     qq1=int(bg1[t1][1:2])  #     # print(p)               #     k1=figure[t1] #     print(pp1,qq1,k1)#            # 写入彩色图片run=doc.tables[0].cell(0,0).paragraphs[0].add_run()        # 在第1个表格中第2个单元格内插入国旗run.add_picture('{}'.format(path1[nn]),width=Cm(14.04),height=Cm(19.2))            # 1.5的图片最多6个table.cell(0,0).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中  # 写入黑白图片run=doc.tables[0].cell(0,1).paragraphs[0].add_run()        # 在第1个表格中第2个单元格内插入国旗run.add_picture('{}'.format(path2[nn]),width=Cm(14.04),height=Cm(19.2))            # 1.5的图片最多6个table.cell(0,1).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中  doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\脸谱涂色\零时Word\{}.docx'.format('%02d'%nn))   from docx2pdf import convert# docx 文件另存为PDF文件inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/脸谱涂色/零时Word/{}.docx".format('%02d'%nn)  # 要转换的文件:已存在outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/脸谱涂色/零时Word/{}.pdf".format('%02d'%nn)  # 要生成的文件:不存在# 先创建 不存在的 文件f1 = open(outputFile, 'w')f1.close()# 再转换往PDF中写入内容convert(inputFile, outputFile)print('----------第4步:把都有PDF合并为一个打印用PDF------------')# 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
import os
from PyPDF2 import PdfFileMerger
target_path =  'C:/Users/jg2yXRZ/OneDrive/桌面/脸谱涂色/零时Word'
pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
pdf_lst.sort()
file_merger = PdfFileMerger()
for pdf in pdf_lst:print(pdf)file_merger.append(pdf)
file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/脸谱涂色/(打印合集)脸谱涂色线描稿(共{}份).pdf".format(len(path2)))file_merger.close()
# doc.Close()# # # print('----------第5步:删除临时文件夹------------')    
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/脸谱涂色/零时Word') #递归删除文件夹,即:删除非空文件夹

终端演示:(彩图片转换线描太慢了,先做64个图片) 

 "零时文件夹"里的图片,逐步生成word和PDF,最后合并PDF,并自动删除“零时文件夹”

 

 

 作品展示:

PDF学具(A4横版)

左右两个图案是一样的(有颜色和没有颜色,便于幼儿涂色,最好用水彩笔,但是实际情况只有“米罗可儿12色粗蜡笔",所以“468份脸谱合并的PDF”在打印时,教师最好有意识挑选一些涂色块面大、脸谱色彩能对应12色蜡笔(有这种颜色的蜡笔)的脸谱图案——打印当前页。凑满30份。)

视频GIF:京剧脸谱(涂色)学具展示(64份)

 

花了两天时间,才把473张脸谱转成线描,然后生成PDF

从2023年7月25日12点14分,一直生成到13:00分,46分钟才跑完

 

 

感悟:

1、有了”照片/简笔画彩图 转 线描素描稿”的代码后,就可以将更多的彩色简笔画图片转为线稿,从而为幼儿提供涂色类学具。、

2、对称的线稿图片,还可以用切割代码切除右边部分,让幼儿尝试画对称图案。

3、线稿图片,切割N*N块,进行拼图。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/45108.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能ai生成绘画软件有哪些?亲测好用的软件分享

小伙伴们有听说过ai绘画吗?这是目前比较火的一种绘画方式,我们可以通过给AI输入一段关于画面描述的文字内容,ai就可以根据这些内容,生成一幅相关的画作。对于不会画画,但是有创意的小伙伴,你们会不会也想试…

Drawio免费绘图软件下载

drawio是一款强大、免费的绘图工具,使用起来非常方便,非常好用,可以满足大部分画图功能,例如UML、页面设计(Android&iOS)等visio能画的图它都可以画。支持网页版使用(网页版可以自己部署一套…

ai绘画生成软件哪个好?这3款ai绘画生成软件还不错

你知道ai绘画生成软件哪个好吗?随着人工智能技术的不断进步,AI绘画已经成为了一种极具前瞻性的技术。 在过去的几年中,出现了许多强大的AI绘画工具,如一键AI绘画、梦幻AI画家和Midjourney软件等。这些工具利用机器学习和计算机视觉…

文字生成绘画软件有哪些?推荐你几款好用的ai绘画工具

在社交媒体应用中,文字生成绘画的软件可以使我们更好地记录生活中的美好瞬间,而且它可以把文字内容制作成好看的图片分享给亲朋好友,增强沟通和互动效果。那么,小伙伴们知道文字生成绘画软件有哪些吗?这篇文章就给你推…

推荐几个ai生成绘画软件给你

绘画是一门需要艺术家经过长时间的学习和实践才能精通的技能,但现在有了人工智能绘画软件,人们可以更加轻松地创作出美丽的作品。今天,我们将和大家介绍一下ai绘画软件有哪些,希望这篇文章能够帮助你们实现自己的创意。 推荐电脑端…

ai绘画生成软件哪个好?分享几个ai绘画软件

ai绘画是人工智能技术在绘画领域的应用。随着科学技术的不断发展,越来越多的绘画软件开始采用ai技术,为画家提供更加自由、更加灵活的绘画体验。ai绘画的基本原理是利用人工智能技术对绘画过程进行辅助。在传统的绘画中,艺术家需要通过手工完…

这几个AI生成绘画软件推荐给大家

以前只有专业的画家才能绘制出优秀的画作,但现在AI技术的进步为普通人带来了极大的便利,只需要使用特定的软件,就能轻松绘制出高质量的画作。那大家知道可以AI人工智能绘画的软件有哪些吗?如果不知道也没关系,我来分享几款给你。…

AI绘画怎么生成?这些软件帮助你实现

不知道前段时间,大家的朋友圈会不会出现很多的ai绘画作品呢?这是近期一个深受年轻人喜欢的绘画手法,它主要是通过ai技术,将我们描述的文字以及图片绘制成一幅画。那大家知道ai绘画怎么弄的吗?不知道的没关系&#xff0…

android手机绘图软件,手机绘画软件(MediBang Paint Tablet)

MediBang Paint Tablet 是一款功能丰富的手机绘画软件,主要是用来绘制插画和漫画,内置有丰富的笔刷、素材、漫画用字体等功能,方便动漫作者进行创作,软件还为作者提供了云存储空间,作品可以上传保存,也可以…

AI可以自动生成绘画吗?分享几款AI绘画软件

AI绘画热潮来临之前,我在网上看到不少人发了AI绘画的图片,除了画人物,还有画漫画和风景的图片,画面真实和色彩丰富程度让我不敢相信是AI画的,于是就去网上搜索AI可以自动生成绘画吗?在搜索的过程中&#xf…

最新python爬虫爬取国外亚马逊商品分类里的所有商品标题,图片,介绍和价格

亚马逊某个分类商品的页面 一开始肯定就是只试试这一个页面,看看能不能请求到刚开始不知道反爬做的好不好,就简单的加个User-Agent,果然不行,爬到的网页是让输入验证码的网页。然后就是用session, 再加上cookie,咦&a…

C#绘图及图像

C#绘图及图像 绘图的基本方法 绘图的应用

一键即可实现图片翻译成中文,多国语言任意选

大家有没有遇到过以下这些困扰呢:职场上对接的甲方是外国人,对方发来一堆外文图片文件、或是想在网上了解一些国外的实时资讯,但通常内容中会夹杂着一些英文图片等等。这些情况对于外语基础薄弱的人来说,简直是一个头两个大&#…

在线古诗自动生成器的设计与实现

在线古诗自动生成器的设计与实现 前言一、算法模型介绍LSTM简介模型框架实验环境实验与分析实验数据集数据集预处理训练过程模型训练结果模型的评估 二.在线古诗生成器的设计与实现系统结构远程服务器的项目部署系统测试 三.成品展示 前言 古诗,作为中华文化的凝结&…

[R语言]手把手教你如何绘图(万字)

目录 概况 常用高级图形 条形图 csv文件导入 csv文件导出 R语言sep函数 seq函数 with函数 直方图和密度估计图 盒型图 boxplot() 正态QQ图 散点图 pairs()散点矩阵图 曲线图 curve() 三维图 动态三维图 低级图形函数 abline() lines() legand()增加图例 …

古诗文本自动生成唐诗文本生成(算例代码)

首先准备好一个本地文件,在此我命名为唐诗三百首.txt如下图(https://img-blog.csdnimg. 图片: ##代码如下 import numpy as np, os from collections import Counter from warnings import filterwarnings filterwarnings(ignore) # 不打印警告from keras.utils…

UE4_UE5结合offline voice recognition插件做语音识别功能

市面上主流的语音识别大多是用科大讯飞的SDK,但是那个也不是完全免费使用的,于是我选择使用offline voice recognition的语音识别,购买插件终生使用。 offline voice recognition插件在UE官方商城卖200多元。 我将它需要的资源都打包成一个r…

AI协助理清思路?两位大学生短时间内开发的ChatMind思维导图为知识工作者带来无限便利

为什么结合ChatGPT生成的思维导图比其他ChatGPT有优势 结合ChatGPT生成的思维导图的优势在于,它可以将ChatGPT生成的信息可视化并以图形化的方式呈现出来。这样可以让用户更容易理解,记忆和组织ChatGPT生成的信息。思维导图还可以帮助人们分析ChatGPT生…

写了一首 Java 表白诗,女朋友不愁了!

祝大家 情人节快乐 一首原创 Java 诗 表白大家了 遇见你的第一天 忍不住内心的躁动 我在心里开辟了一块你的内存区域 和你的每一次美好邂逅 我都封装成记忆 深深将它压入堆栈 舍不得让它逃逸 追求你的队列很长 并发很高 我也加入了竞争 拼命挣抢着你的爱情锁 却被一直阻塞着 想…

写一首 Java 表白诗,女朋友不愁了 | 每日趣闻

作者 | 栈长 来源 | Java技术栈(ID:javastack) 遇见你的第一天 忍不住内心的躁动 我在心里开辟了一块你的内存区域 和你的每一次美好邂逅 我都封装成记忆 深深将它压入堆栈 舍不得让它逃逸 追求你的队列很长 并发很高 我也加入了竞争 拼命挣抢…