turtle库绘图:绘制QQ所有表情

  • 实现思路
    • 主体思路
    • 改进
    • 可选参数及推荐设置
  • 具体代码
  • 实现效果
  • 可完善方向

turtle库绘图:绘制QQ表情资源链接如右:turtle库绘图:绘制QQ表情

实现思路

主体思路

turtle画笔在图像矩阵上进行滑动,通过pencolor()函数设置画笔颜色为当前像素点的RGB值,绘制一段距离,然后获取下一像素点的距离,继续绘制。

改进

由于对每一个像素点进行绘制,整个表情的绘制时间会比较长,为进一步提升绘制速度,在绘制之前,加入一个预判断的过程,若连续5个像素点的平均RGB<=0.9,才对这五个像素点分别进行绘制,否则进行下五个像素点的预判断。预判断的加入可以减少对部分背景像素点的绘制,节约部分时间。

可选参数及推荐设置

im:本地读入的要绘制的表情图片
ps:绘制时的画笔大小
stepsize:预判断时的像素点设置

推荐读入的表情图片分辨率小于250×250,画笔大小<5,画笔大小即为对原图像的放大倍数,设置太大锯齿感会十分明显,同时画笔大小与原图像分辨率的乘积决定了绘图窗口的大小,太大的话画布会显示不完整。
预判断阈值设置为0.9,即认为图像中的背景像素点接近白色,故对于背景为其它颜色的图像,该阈值将不起作用,程序同样能实现对这类图像的绘制,只不过不能节约绘制时间。

具体代码

# -*- coding: utf-8 -*-
"""
Created on Mon Aug 13 21:34:21 2018@author: 魅梦
"""
import matplotlib.pyplot as plt
from turtle import *
import numpy as npim = plt.imread('20201114102455.png')
speed(0)
# 设置画笔大小
ps = 3
stepsize = 5
height, weight, deep = im.shape[0], im.shape[1], im.shape[2]
maincolor = np.mean(im.reshape(height*weight, deep), axis=0)
print(tuple(maincolor))
if im[0][0][0] > 1:im = im/255
screensize(weight*ps, height*ps)
setup(weight*(ps + 1), height*(ps + 1))for he in range(height):for we in range(0, weight, stepsize):if np.mean(im[he][we: we + stepsize]) <= 0.9:up()goto(ps*(we - weight/2), ps*(height/2 - he))down()for w in range(we, we + stepsize):r, g, b = im[he][w][0], im[he][w][1], im[he][w][2]pencolor(r.item(), g.item(), b.item())pensize(ps)forward(ps)
hideturtle()
done()

实现效果

可完善方向

本文实现了对表情的绘制,为节约部分图像的绘制时间进行了预判断,设置部分参数可选,若读者有兴趣,可以引入图像去噪算法,实现对表情的高清绘制,同时对整体背景RGB进行提取实现预判断阈值的自动设置,扩展程序适用的图像范围。

turtle库绘图:绘制QQ所有表情相关推荐

  1. python turtle库setpos_Python内置海龟(turtle)库绘图命令详解(二)

    继续谈利用海龟库(turtle库)做图.在这篇文章(Python内置海龟(turtle)库绘图命令详解(一))中已经介绍了turtle的一些基本画图命令,包括画布的设计.画笔属性与状态的设置以及画笔的 ...

  2. 用python代码(turtle库)绘制好看的效果图

    最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成喔~) one 樱花树 效果(有 ...

  3. Python利用turtle库绘图大熊猫

    Python利用turtle库绘图大熊猫 卡通大熊猫的详细代码 由代码绘制的熊猫宝宝 Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原 ...

  4. python使用turtle库、绘制一个八边形_【Python】turtle八边形绘制

    [Python]turtle八边形绘制 ‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬ ...

  5. 使用turtle库,绘制一个正方形。

    题目: 使用turtle库,绘制一个正方形. 代码如下(示例): # 使用turtle库,绘制一个正方形. import turtle as t # 隐藏箭头 t.hideturtle() # 画笔落 ...

  6. Python的turtle库绘图-樱花动态飘落

    Python的turtle库绘图-樱花动态飘落 loading...... (o゜▽゜)o☆[BINGO!] # *===================================* # -*- ...

  7. python使用turtle库、绘制一个八角形_Python:turtle库的使用及图形绘制

    [TOC] 一.绘制一个八边形 使用turtle库,绘制一个八边形 代码: from turtle import * setup(800,800,20,20) penup() left(90) fd( ...

  8. turtle叠边形绘制使用turtle库,绘制一个叠边形,其中,叠边形内角为100度。提示:一共9条边,共2圈,每次左转角度为80度(720/9)输出示例叠边形效果如下:

    题目: turtle叠边形绘制 使用turtle库,绘制一个叠边形,其中,叠边形内角为100度. 提示:一共9条边,共2圈,每次左转角度为80度(720/9) 输出示例 叠边形效果如下: 代码如下(示 ...

  9. turtle库绘图:绘制QQ表情“蹭一蹭”

    利用turtle库,主要调用goto()函数.circle()函数和改变角度的left()函数,通过不断地尝试,最终实现QQ表情"蹭一蹭"的绘制,代码如下. # -*- codin ...

  10. Python学习17 Turtle库绘图

    学习网址:https://docs.python.org/zh-cn/3/library/turtle.html Turtle库 Turtle库是Python语言中一个很流行的绘制图像的函数库,一个小 ...

最新文章

  1. 执行在一行中组合多个Linux命令
  2. 下面属于javascript内部对象的有_【JavaScript 教程】面向对象编程——this 关键字...
  3. 手机app上的consent管理
  4. vbs获取群聊当前内容_通过VBS脚本批量检测服务器状态 - 易本地工作室-Ebend SoftwareNetwork Studio - 群发,采集,管理类软件定制开发服务【易本地工作室】...
  5. mysql 外键和事务,MySQL-约束和事务
  6. Go语言的复合数据类型struct,array,slice,map
  7. eclipse中文语言包安装
  8. 能源管理系统—能源在线监测平台搭建
  9. 如何讲好一个故事(6个要素)
  10. 量子卡塔教您如何在Q#中进行量子编程
  11. 前端页面分辨率适配问题
  12. Explainability in Graph Neural Networks:A Taxonomic Survey 图可解释
  13. 编译 pg_repack
  14. python逢7跳过_07.报数游戏:7的倍数或含7的数跳过,趣说python循环里的break和continue...
  15. 电路中的 电源 与 接地 的理解
  16. php做引流脚本,自动引流脚本你知道是怎么实现的自动化引流?
  17. php继承父类的关键字,php继承父类函数
  18. CSS 表格制作日历
  19. 【python编程】使用python获取机器所在网络的公网IP(第一种方法)
  20. java练习——用循环输出等腰三角形

热门文章

  1. mysql表结构指哪些_gp数据库查看表结构
  2. 一篇文章看懂NB-IoT
  3. vs2019安装和使用教程(详细)
  4. 惠普打印机没有扫描问题解决
  5. php mysql是bs还是cs_bs和cs架构的区别是什么
  6. java面试 bs cs_面试题思考:BS与CS的区别与联系
  7. word写论文公式编号问题
  8. 微信小程序服务通知 模板消息
  9. electron ui框架
  10. 新手如何学电影解说剪辑全教程