近年,技術圈炒的最火的兩個話(ba)題(gua)不外乎就是人工智障智能以及炒幣區塊鏈了,這個系列文章我主要以一個小菜鳥的角度一步一步的對人工智能的相關知識作一點了解,也算是一個顫顫巍巍追着AI浪潮公交車的社會主義五好青年,咳咳,扯遠了...其實對於人工智能,嚴格意義上更多的是一個科學領域的課題,其中更多的是數學、語言學、社會學、神經科學的研究內容,對於咱們這種社會底層的小碼農想要進入這個領域每每可能面臨的是一大堆的專業名詞,一大堆的技術論文,一大堆公開課還有一大堆的不知道到底搞懂沒有可是吹的很牛逼的培訓機構講師,門都沒入就被各類忽悠到西伯利亞去了。
所以,本文將會以一些正經的嚴謹的有深度的(大概吧)的課題,慢慢的接觸人工智能的相關知識。java
提起人工智能,就不得不提Python語言,但實際上Python不是什麼新東西,反而這是一門至關老的語言了起源甚至能夠追溯到80年代末90年代初,那爲什麼它會在人工智能這個風口獨領風騷佔據了半壁江山呢?Python的特色整體能夠概括成如下幾點:python
好的,按照國際管理,咱們先用python來寫個hellow worldc++
P.S. 本文基於Python3,並且一些語法細節也不會一一講解,更完整的語法還請查閱官網文檔!如非特殊狀況的話仍是更推薦你們學習Python3,至於Python2跟Python3的區別就不在贅述了。
Python源碼以.py爲後綴,如下爲一個最簡例子:git
example-1: helloWorld.pygithub
# -*- coding:utf-8 -*- #__author__ = 'akers' print("hellow world !")
沒錯,就是這麼簡單!用python helloWorld.py運行,就能看到打印的Hellow World了!(沒錯,我單詞打錯了,僅此一家,版權全部,若有雷同,純屬巧合,本人不保留追究權利!)
由於Python柔和了面向對象、面向過程、函數式編程等多種編程方式,所以相似這種直接在源文件中書寫命令也是支持的,這種寫法在製做一些小工具、小腳本、小實驗的時候很是很是的方便,但咱們要嚴謹一點對吧,因此咱們再來個正經點的:編程
如下爲一個Python的main方法的最簡例子:
example-1: hello_world_main.pywindows
# -*- coding:utf-8 -*- #__author__ = 'akers' if __name__ == "__main__": print("hellow world !");
在上面例子中的if __name__ == "__main__":
即爲平時咱們熟知的main方法了,那至於一些以爲這個很彆扭的,看不慣的,可使用以下這種格式的:編程語言
# -*- coding:utf-8 -*- #__author__ = 'akers' import sys #包導入 # 常見的main函數定義 def main(argv=[]): print("hellow world: ", argv) # 你看不到我,你看不到我 if __name__ == "__main__": main(sys.argv) # sys.argv獲取命令行參數
這樣是否是就親切不少了呢,跟你熟悉的java和c是否是就同樣同樣了呢....額....你說那個__name__啥的,沒事你就當沒看見了!啊?你問這個__name__是什麼?其實它是一個內置變量,若是是直接執行的話,編譯器會傳入"main"若是是做爲包引入,會傳入包名。
而後,本期文章就到此結束了,纔怪!下面讓咱們把HelloWorld完善一下函數式編程
先準備一個底圖函數
而後請出——————————館長大人:
PIL是Python的一個視覺處理庫,目前已經中止維護了,但它後繼有人啊,pillow庫fork了它,所以通常咱們說PIL的時候,實際上用的是pillow
Python的外部依賴,須要經過pip工具進行安裝,而後才能在代碼裏import到相應的包,下面以安裝過pillow爲例:pip install pillow
from PIL import Image,ImageDraw,ImageFont
#導入表情背景 background=Image.open('./resources/background/pander/default.png') #導入表情 faceImg=Image.open('./resources/face/jgz/laugth.png')
#建立底圖 target=Image.new('RGBA', (250, 250), (0, 0, 0, 0)) #表情背景貼到底圖上 target.paste(background, (0,0)) #表情圖貼在合適的位置上,注意啊,別擋到背景圖 target.paste(faceImg, (62,37))
#ImageDraw爲PIL的繪圖模塊 draw = ImageDraw.Draw(target) #設置字體 font = ImageFont.truetype('./resources/msyh.ttc', 30) #底圖上的10,200位置寫入文字 draw.text((10, 200), argv[1],fill='black', font=font)
上面的argv[1]就是取第一個命令行參數
運行一下咱們腳本:
python emofigther.py "Hellow World!"
而後,你就會獲得一個Hellow World!(沒錯,我依然打錯單詞了!)
我相信大家的鬥圖之魂已經有點按耐不住了,可是等等,如今生成的圖片還獲得output文件夾找,很是不方即是吧,能不能實如今運行腳本後,生成的圖片自動放到剪貼板呢?固然能夠!咱們能夠用pywin32這個package,他提供了一套用python封裝的win32庫(windows應用開發的一套底層庫)接口。
from io import BytesIO import win32clipboard as clip import sys, platform, win32con if 'Windows' in platform.platform() or 'windows' in platform.platform(): # 打開字節流 output = BytesIO() # 打開剪貼板 clip.OpenClipboard() # 先清空剪貼板 clip.EmptyClipboard() # 將圖片保存到字節流 target.save(output, format="BMP") # 去掉字節流中的前14個字符(BMP位圖文件頭) data = output.getvalue()[14:] # 將圖片放入剪貼板,這裏是不帶文件頭的數據 clip.SetClipboardData(win32con.CF_DIB, data) clip.CloseClipboard() output.close()
而後再運行下咱們的emofigther
python emofigther.py "Ctrl-V大法好!"
而後找個地方試試Ctrl-V,驚喜不驚喜,意外不意外?
至此,咱們已經用python輕鬆愉快的學會了製做一個鬥圖工具了
本章節的全部例子,均可以在個人GitHub上找到:sources of example-1
等等,有BUG!
好吧,目前咱們的小工具可能還存在着一些小小的瑕疵:
恩,爲了解決這些問題,咱們——————