利用Python算法畫出美麗動人的妹子圖像

python可樂編程 2021-10-29 17:01:04
利用 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://pythonmana.com/2021/10/20211029165857660h.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...