近年,技术圈炒的最火的两个话(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!
好吧,目前咱们的小工具可能还存在着一些小小的瑕疵:
恩,为了解决这些问题,咱们——————