turtle库绘图:绘制QQ所有表情
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所有表情相关推荐
- python turtle库setpos_Python内置海龟(turtle)库绘图命令详解(二)
继续谈利用海龟库(turtle库)做图.在这篇文章(Python内置海龟(turtle)库绘图命令详解(一))中已经介绍了turtle的一些基本画图命令,包括画布的设计.画笔属性与状态的设置以及画笔的 ...
- 用python代码(turtle库)绘制好看的效果图
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成喔~) one 樱花树 效果(有 ...
- Python利用turtle库绘图大熊猫
Python利用turtle库绘图大熊猫 卡通大熊猫的详细代码 由代码绘制的熊猫宝宝 Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原 ...
- python使用turtle库、绘制一个八边形_【Python】turtle八边形绘制
[Python]turtle八边形绘制 ...
- 使用turtle库,绘制一个正方形。
题目: 使用turtle库,绘制一个正方形. 代码如下(示例): # 使用turtle库,绘制一个正方形. import turtle as t # 隐藏箭头 t.hideturtle() # 画笔落 ...
- Python的turtle库绘图-樱花动态飘落
Python的turtle库绘图-樱花动态飘落 loading...... (o゜▽゜)o☆[BINGO!] # *===================================* # -*- ...
- python使用turtle库、绘制一个八角形_Python:turtle库的使用及图形绘制
[TOC] 一.绘制一个八边形 使用turtle库,绘制一个八边形 代码: from turtle import * setup(800,800,20,20) penup() left(90) fd( ...
- turtle叠边形绘制使用turtle库,绘制一个叠边形,其中,叠边形内角为100度。提示:一共9条边,共2圈,每次左转角度为80度(720/9)输出示例叠边形效果如下:
题目: turtle叠边形绘制 使用turtle库,绘制一个叠边形,其中,叠边形内角为100度. 提示:一共9条边,共2圈,每次左转角度为80度(720/9) 输出示例 叠边形效果如下: 代码如下(示 ...
- turtle库绘图:绘制QQ表情“蹭一蹭”
利用turtle库,主要调用goto()函数.circle()函数和改变角度的left()函数,通过不断地尝试,最终实现QQ表情"蹭一蹭"的绘制,代码如下. # -*- codin ...
- Python学习17 Turtle库绘图
学习网址:https://docs.python.org/zh-cn/3/library/turtle.html Turtle库 Turtle库是Python语言中一个很流行的绘制图像的函数库,一个小 ...
最新文章
- 执行在一行中组合多个Linux命令
- 下面属于javascript内部对象的有_【JavaScript 教程】面向对象编程——this 关键字...
- 手机app上的consent管理
- vbs获取群聊当前内容_通过VBS脚本批量检测服务器状态 - 易本地工作室-Ebend SoftwareNetwork Studio - 群发,采集,管理类软件定制开发服务【易本地工作室】...
- mysql 外键和事务,MySQL-约束和事务
- Go语言的复合数据类型struct,array,slice,map
- eclipse中文语言包安装
- 能源管理系统—能源在线监测平台搭建
- 如何讲好一个故事(6个要素)
- 量子卡塔教您如何在Q#中进行量子编程
- 前端页面分辨率适配问题
- Explainability in Graph Neural Networks:A Taxonomic Survey 图可解释
- 编译 pg_repack
- python逢7跳过_07.报数游戏:7的倍数或含7的数跳过,趣说python循环里的break和continue...
- 电路中的 电源 与 接地 的理解
- php做引流脚本,自动引流脚本你知道是怎么实现的自动化引流?
- php继承父类的关键字,php继承父类函数
- CSS 表格制作日历
- 【python编程】使用python获取机器所在网络的公网IP(第一种方法)
- java练习——用循环输出等腰三角形