Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的python

Python作为目前万能的语言,应用的领域真的非常多,下面我们来看看,Python是如何用于唱歌、跳舞、写字、画图的:

1.介绍一个异常简单的使用Python语言和开源库OpenCV的人脸识别方法,供此开启人脸识别之旅。

Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的python

让我们再对Abba图片进行一次测试。 $ python face_detect.py abba.png haar级联_frontalface_default.xml

Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的python

这个工作正常,其他图片检测结果如何?

Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的python

那个…不是人脸。让我们再试一次。我修改了参数设置,发现将scaleFactor设置成1.2可以将识别错识的人脸过滤掉。

发生了什么?好吧,第一张相片使用了一个高相素相机在较近的距离进行拍摄。第二张相片貌似是使用的手机在较远距离进行的拍摄。这就是参数scaleFactor需要修改的原因。就像我说过的,你需要根据不同测试案例对算法进行不同的参数设置从而避免误识别的发生。

需要注意的是,由于采用了基于机械学习的算法,检测结果永远无法达到100%精确。大多数案例中你都能得到较好的结果,但偶尔算法也会检测到错误的对象,就像检测到错误的人脸一样。

OpenCV是计算机视觉领域最受欢迎的库。OpenCV最早是使用C/C++语言进行编写的,现已支持Python语言捆绑使用。

OpenCV使用机械学习算法对图像中的人脸进行搜索。由于有着与人脸一样复杂的原因,不存在一项简便的测试可以告知人们是否能够识别出人脸。相反,算法需要对成千上万细小的模式和特征进行匹配。面部识别算法被分解成成千上万很小的、易理解的任务,每一个任务较易实现。这些任务被称为分类器。

像人脸一样,你可能有6,000个基于更多的分类器在进行人脸检测过程中,每一个分类器都需要进行匹配(当然要在一定的误差范围内)。但这其中就有问题了。在人脸识别过程中,算法从图片的左上角开始向右下角按小块逐步进行匹配,对每一个小块的识别过程中,算法都会持续的问:“这是人脸么?这是人脸么?这是人脸么?”由于在每个小块有着6000甚至更多的匹配项需要进行匹配,你可能会有无数的计算要执行,这些计算将引发你的电脑发生死机。

2.机器自己学唱歌一首

现在我们可以开始了解这样一个系统是如何工作了。一种音频指纹识别系统做到两点:

  1. 1.通过指纹标记学习一首新歌2.通过在数据库中搜索已经学习过的歌曲来识别一首未知歌曲

为此,我们将用到以上的所有知识和MySQL数据库功能。我们的数据库将包含两个表:

  1. 1.指纹记录2.歌曲记录

音频指纹记录表

音频指纹记录表有如下字段:

Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的python

首先,注意到我们不仅有一个hash和song_id 字段,还有一个offset 字段。这对应于哈希来源的谱图上的时间偏移量。这会在后面我们在通过匹配哈希值来过滤时用到。只有哈希值与真实信息一致才是我们真正要识别出的(更多看下面音频指纹比对)。

其次,我们有很好的理由把hash 设置成INDEX。因为所有的查询都将需要做匹配操作,所以这里我们需要一个真正的快速检索。

然后,UNIQUE只是确保我们没有重复。无需浪费空间或者因为重复的音频影响匹配查询速度。

如果你在绞尽脑汁地想我为什么把 hash 设置成 binary(10),原因是,哈希值通常太长,设置少点有得于减少存储。下面是每首歌的音频指纹数图:

Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的python

最前面的是Justin Timberlake 的"Mirrors" ,音频指纹数超过240K,其次Robin Thicke 的"Blurred Lines" 也有180k。底部是acapella演艺的”Cups”, 是一首乐器很少,仅有人声和和声的歌曲。 做个对比,听听 "Mirrors"。你会发现明显的乐器声组成的“噪音墙”并且填充的频谱数从高到低分类,即频谱丰富与否与峰的频率高低是一致的。这个数据集里每首歌平均超过100k个音频指纹数。

有这么多的指纹,我们需要从哈希值水平上减少不必要的硬盘存储。对于指纹哈希,我们将开始使用SHA-1哈希,然后减少一半大小(只有前20个字符)。这使我们每个哈希值减少了一半的字节数:

Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的python

下一步,我们将采取十六进制编码,并将其转换为二进制,再次大幅削减空间:

Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的python

现在好多了。我们把hash字段从320 bits降到了80 bits,减少了75%。

我在系统中第一次尝试时,我把hash字段设置成了char(40)-这导致了单单音频指纹表就占据超过了1GB的空间。设置成binary(10)后,我们把表的大小降低到只需377M就成存储520万个音频指纹。

我们确实丢失了一些信息——从统计学的角度来说我们的哈希值现在碰撞的更频繁。我们降低了哈希相当多的“信息熵”。然而,重要的是要记住,我们的熵(或信息)也包括offset字段,这有4个字节。这使得我们每个音频指纹的总信息熵为:

Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的python

就说,我们已经节省了自己75%的空间,但仍然有一个巨大无比的指纹空间要处理。要保证每个字段的理想分布是很困难的,但是我们已经有足够的信息熵进行接下来的工作了。

3.使用python基于Tensorflow设计手写数字识别算法,并编程实现GUI界面,构建手写数字识别系统。

本文实现的系统其实是基于卷积神经网络的手写数字识别系统。该系统能快速实现手写数字识别,成功识别率高。缺点:只能正确识别单个数字,图像预处理还不够,没有进行图像分割,读者也可以自行添加,进行完善。

本文采编自:Python(TensorFlow框架)实现手写数字识别系统 - louishao的博客 - CSDN博客

写了一些辅助函数,可以查看部分识别错误的图片,

Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的python

还可以查看混淆矩阵,

Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的python
Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的python

系统中还添加了一点图像预处理的操作,比如灰度化,图像信息的归一化等,更贴近实际应用。 系统可进行快速识别,如下图

Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的python

4.python 画图--简单开始及折线图

相关参考资料:

matplotlib官方文档:http://matplotlib.org/api/pyplot_summary.html (api的调用及一些示例代码)

一个中文版的文档(不全):http://old.sebug.net/paper/books/scipydoc/matplotlib_intro.html

matplotlib较详细的剖析:http://www.cnblogs.com/vamei/archive/2013/01/30/2879700.html

三种图的绘制:http://www.cnblogs.com/hustlx/p/5264562.html

多张图的绘制:http://www.2cto.com/kf/201407/317115.html

一、环境准备

linux ubuntu 下需安装下面三个包: Numpy, Scipy,Matplotlib

分别输入下面的代码进行安装:

pip install numpy 
pip install scipy 
sudo apt-get install python-matplotlib 

测试是否安装成功

python 
>>> import pylab 

如果没有报错则安装成功

二、开始画图

1. 画最简单的直线图

代码如下:

import numpy as np 
import matplotlib.pyplot as plt 
x=[0,1] 
y=[0,1] 
plt.figure() 
plt.plot(x,y) 
plt.savefig("easyplot.jpg") 

结果如下:

Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的python

代码解释:

#x轴,y轴 
x=[0,1] 
y=[0,1] 
#创建绘图对象 
plt.figure() 
#在当前绘图对象进行绘图(两个参数是x,y轴的数据) 
plt.plot(x,y) 
#保存图象 
plt.savefig("easyplot.jpg") 

2. 给图加上标签与标题

上面的图没有相应的X,Y轴标签说明与标题

在上述代码基础上,可以加上这些内容

代码如下:

import numpy as np 
import matplotlib.pyplot as plt 
x=[0,1] 
y=[0,1] 
plt.figure() 
plt.plot(x,y) 
plt.xlabel("time(s)") 
plt.ylabel("value(m)") 
plt.title("A simple plot") 

结果如下:

Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的python

代码解释:

plt.xlabel("time(s)") #X轴标签plt.ylabel("value(m)") #Y轴标签plt.title("A simple plot") #标题

3. 画sinx曲线

代码如下:

# -*- coding: utf-8 -*- 
import numpy as np 
import matplotlib.pyplot as plt 
#设置x,y轴的数值(y=sinx) 
x = np.linspace(0, 10, 1000) 
y = np.sin(x) 
#创建绘图对象,figsize参数可以指定绘图对象的宽度和高度,单位为英寸,一英寸=80px 
plt.figure(figsize=(8,4)) 
#在当前绘图对象中画图(x轴,y轴,给所绘制的曲线的名字,画线颜色,画线宽度) 
plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2) 
#X轴的文字 
plt.xlabel("Time(s)") 
#Y轴的文字 
plt.ylabel("Volt") 
#图表的标题 
plt.title("PyPlot First Example") 
#Y轴的范围 
plt.ylim(-1.2,1.2) 
#显示图示 
plt.legend() 
#显示图 
plt.show() 
#保存图 
plt.savefig("sinx.jpg") 

结果如下:

Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的python

4. 画折线图

代码如下:

# -*- coding: utf-8 -*- 
import numpy as np 
import matplotlib.pyplot as plt 
#X轴,Y轴数据 
x = [0,1,2,3,4,5,6] 
y = [0.3,0.4,2,5,3,4.5,4] 
plt.figure(figsize=(8,4)) #创建绘图对象 
plt.plot(x,y,"b--",linewidth=1) #在当前绘图对象绘图(X轴,Y轴,蓝色虚线,线宽度) 
plt.xlabel("Time(s)") #X轴标签 
plt.ylabel("Volt") #Y轴标签 
plt.title("Line plot") #图标题 
plt.show() #显示图 
plt.savefig("line.jpg") #保存图 

结果如下:

Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的python

最后现在Python成为了炽手可热的一门语言,在如何快速入门的同时,如何进行高效的开发是一门语言非常重要的优势。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容

  • python 也是很值得学习的一门工具。学好python和R。 1环境管理 管理 Python 版本和环境的工具 ...
    Liam_ml阅读 4,803评论 1 51
  • 请问一下,现在的公众号运营者们认为他们的最大竞争对手是谁?是现在人们都喜欢看的公众号咪蒙还是papi酱?请你花...
    余仲泉阅读 449评论 0 1
  • 今天,娃跑步上学,跑步放学,晚上的各项任务也积极完成,这学期状态挺好,一定要保持哦! 晚上,我在洗袜子,娃告诉我语...
    落英满地阅读 223评论 0 2
  • 思之念之 见之不忘 吾亦求之 求之不得 吾亦念之 兮之盼之 来之归之 欲予离之 得之兮之 心思念之 盼来归之 归之...
    孤行人殇离别阅读 232评论 0 5
  • 使用WebView控件访问网络 WebView这个控件主要是让我们的程序能够在不打开手机内置浏览器的情况下访问网页...
    yzbkaka阅读 389评论 0 1