利用Python算法画出美丽动人的妹子图像

python可乐编程 2021-10-29 16:59:10
Python 算法 利用 画出 美丽动人

开发工具

Python版本:3.6.4

相关模块:

  • cv2模块;
  • numpy模块;
  • pywin32模块;
  • bs4模块;
  • 以及一些Python自带的模块。

其他:

potrace

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

参考资料

1.http://www.html-js.com/article/1628

 

2.https://zh.wikipedia.org/wiki/%E5%8F%AF%E7%B8%AE%E6%94%BE%E5%90%91%E9%87%8F%E5%9C%96%E5%BD%A2

 

3.https://www.cnblogs.com/hnfxs/p/3148483.html

 

先睹为快

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
 QQ群:701698587
欢迎加入,一起讨论 一起学习!

 

修改所需绘制的图片路径:

 

​在cmd窗口运行main.py文件即可。

 

效果如下:

 

 

原理简介

 

一. 实现步骤

 

首先读入原图:

 

 

其次将原图像的颜色数量通过K均值聚类降低到指定的数量,K值越大,运行速度越慢,但效果越佳:

 

 

每次取出聚类结果中的一种颜色并利用potrace将其转为SVG格式的图形,再解析该格式并用Python自带的turtle库画出来:

 

 

二. SVG格式

 

SVG,即可缩放矢量图形,是一种基于可扩展标记语言(XML),用于描述二维矢量图形的图形格式。SVG主要支持以下几种显示对象:

 

1.矢量显示对象,基本矢量显示对象包括矩形、圆、椭圆、多边形、直线、任意曲线等;

 

2.嵌入式外部图像,包括PNG、JPEG、SVG等;

 

3.文字对象。

 

更多关于SVG的技术细节请参考:

 

http://www.w3school.com.cn/svg/svg_intro.asp

 

三. Turtle库

 

这里推荐一份turtle库的文档:

 

https://www.rddoc.com/doc/Python/3.6.0/zh/library/turtle/

 

四. 贝塞尔曲线

 

画图时用到了贝塞尔曲线,这里简单介绍一下。

 

贝塞尔曲线的数学基础是伯恩斯坦多项式,其得名于法国工程师Pierre Bézier。

 

贝塞尔曲线控制简便却具有极强的描述能力,因此在工业设计领域应用广泛;同时,贝塞尔曲线在矢量图形学领域也占有重要的地位。今天我们最常见的一些矢量绘图软件(例如Flash,CorelDraw,PS等等)均提供了绘制贝塞尔曲线的功能。

 

线性公式:

 

给定点P0、P1,线性贝塞尔曲线是一条两点之间的直线,确定方式如下:

 

 

其实就是线性插值。

 

二次方公式:

 

给定点P0、P1和P2,二阶贝塞尔曲线的路径确定方式如下:

 

 

n次方公式:

 

给定点P0到Pn,n阶贝塞尔曲线的路径确定方式如下:

 

 

贝塞尔曲线的绘制方式(以二阶为例):

 

假设平面内不共线的三个点如下图所示:

 

 

在AB上选一点D,BC上选一点E,使得:

 

AD:AB=BE:BC。

 

连接DE:

 

 

在DE上选一点F,使得:

 

AD:AB=BE:BC=DF:DE

 

 

保证AD,AB,BE,BC,DF,DE之间的比例关系不变,让D点从A点运动到B点,则所有的点F构成的曲线即为二阶贝塞尔曲线:

 

 

n阶贝塞尔曲线的绘制方式类似,例如三阶和四阶:

 

 

 

 

That's all~

 

相关文件中提供了完整源代码和所需的工具,请自行下载使用。

 

链接:https://pan.baidu.com/s/1B01qxCzxpJcB8iOqu2PYHw 提取码:4ztk
版权声明
本文为[python可乐编程]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/pythonQqun200160592/p/15481188.html

  1. 刚学Python,想让大大给我解释一下代码
  2. 剛學Python,想讓大大給我解釋一下代碼
  3. Je viens d'apprendre Python et je veux que tu m'expliques le Code.
  4. Python QT GUI Design: qmainwindow, QWidget and qdialog window classes (Fundamentals - 10)
  5. Python爬虫项目实战:快手网页版滑块captchaSession分析
  6. python计算时间十二小时制
  7. Temps de calcul Python 12 heures
  8. Python crawler Project actual Fighting: faster Web Version Slider CAPTCHA session Analysis
  9. Python要学习多久可以掌握?多久可以精通?
  10. Combien de temps Python va - t - il apprendre à maîtriser? Combien de temps faut - il pour maîtriser?
  11. 从官网上下载的python安装包安装不了
  12. 深度学习项目:如何使用Python和OpenCV进行人脸识别
  13. python编辑语言如内容所示
  14. La langue d'édition Python est affichée dans le contenu
  15. 有谁知道这怎么回事嘛(Python的简单代码)
  16. 有誰知道這怎麼回事嘛(Python的簡單代碼)
  17. Qui sait ce qui se passe?
  18. Python求某个数的因数【因数是指能被这个数整除的数。例如6的因数有:1、2、3、6; 7的因数有:1、7; 8的因数有:1、2、4、8】。
  19. Python calcule les facteurs d'un nombre [les facteurs sont des nombres qui peuvent être divisés par ce nombre. Par exemple, les facteurs de 6 sont: 1, 2, 3, 6; les facteurs de 7 sont: 1, 7; et les facteurs de 8 sont: 1, 2, 4, 8].
  20. 请问这个实验如何做(用python3.x的环境)
  21. 如何创建一个python程序来模拟电影院的座位预订
  22. [algorithm learning] 1486. Array XOR operation (Java / C / C + + / Python / go / trust)
  23. Comment créer un programme Python pour simuler la réservation de sièges dans un cinéma
  24. Comment faire cette expérience (en utilisant l'environnement Python 3.x)
  25. Python之绘制多角星
  26. Pandas的SettingWithCopyWarning报警怎么解决
  27. Comment résoudre l'alarme de réglage avec copywarning de pandas
  28. 使用 Python 进行数据可视化之Matplotlib
  29. Python 常见问题 - 使用 poetry build 打包构建失败,报 ModuleOrPackageNotFound No file/folder found for package
  30. 万圣节奇妙夜,不给糖就捣蛋—Python带你点击解锁恐怖新道具(南瓜头、骷髅、蝙蝠、糖......)
  31. 【算法学习】1221. 分割平衡字符串(java / c / c++ / python / go / rust)
  32. 教你用Python 编写 Hadoop MapReduce 程序
  33. Je t'ai appris à écrire Hadoop mapreduce en Python.
  34. Pandas下载最新版和python不匹配
  35. python tkinter GUI编程如何实现一个时钟,无论主线程怎么卡住,都不影响时钟正常进行走时间。
  36. python tkinter GUI編程如何實現一個時鐘,無論主線程怎麼卡住,都不影響時鐘正常進行走時間。
  37. La programmation de l'interface graphique Python tkinter pour implémenter une horloge n'affecte pas le temps de fonctionnement normal de l'horloge, peu importe comment le fil principal est coincé.
  38. Pandas télécharger la dernière version ne correspond pas à Python
  39. Make a cool music player with Python [V3.0 including source code and packaged exe]
  40. 编写一个函数,可以传入两个实参或三个实参。如果传入两个实参,返回求和。如果传入三个实参,返回的话。前两个实参的和对第三个实参求余的结果Python
  41. python用tcp写server传输文件遇到的问题
  42. Python - - fichiers et exceptions
  43. Python failed to install pyinstaller, preparing wheel metadata... Error
  44. Python Turtle库 画魔法少女里的小圆晓美焰
  45. Quels sont les types de données intégrés de python? Les chiffres.
  46. python代碼實現掃碼關注公眾號登錄
  47. Mise en œuvre du Code Python
  48. 捋一捋Python中的数学运算math库(上篇)
  49. Python:晚上把附近的足浴店都给爬了一遍,好兄弟真不错
  50. python接收字符串,返回其中字符的最后一次出现,并顺序存入列表
  51. python post请求特殊data数据怎么发送
  52. Python: J'ai escaladé tous les salons de foot voisins la nuit. C'est un bon frère.
  53. Retouchez la Bibliothèque math ématiques en Python (Partie 1)
  54. 拓端tecdat:Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列
  55. 拓端tecdat|PYTHON贝叶斯推断计算:用BETA先验分布推断概率和可视化案例
  56. Extension tedat | Python Bayesian Inference Calculation: Inference Probability and Visualization Case Using Beta precedent distribution
  57. python字典里的键是不可变类型,值是可变类型对不对
  58. Extension tedat: Python Prediction and Analysis of Stock Market return time series Using Arima and GARCH Models
  59. Python小白福音!Github开源了一款神器....
  60. Python LITTLE WHITE Gospel! Github a ouvert un artefact...