python图形编程代码大全_可以用 Python 编程语言做哪些神奇好玩的事情?

先看一看上面这个是干嘛的!!!!!不知道往下看!

————————

鉴于问题是编程语言可以做哪些神器好玩的事,我先把Python可以应用于哪些领域和使用了哪些框架技术整理出来,然后再给大家收集可以用于的神器好玩的事,也希望大家留言给我,我补充给大家。

本文分为两部分:

第一部分:可以用 Python 编程语言做哪些神奇好玩的事情?

你想更深入了解学习Python知识体系,你可以看一下我们花费了一个多月整理了上百小时的几百个知识点体系内容:

第二部分: Python 编程有哪些神奇简单的框架?

更新于2017.08.03-09:22

—————第一部分:可以用 Python 编程语言做哪些神奇好玩的事情?———————

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

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

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

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

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

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

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

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

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

2.机器自己学唱歌一首

现在我们可以开始了解这样一个系统是如何工作了。一种音频指纹识别系统做到两点:1.通过指纹标记学习一首新歌

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

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

2.歌曲记录

音频指纹记录表

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

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

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

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

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

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

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

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

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

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

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

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

3.使用python基于Tensorflow设计手写数字识别算法,并编程实现GUI界面,构建手写数字识别系统。本文实现的系统其实是基于卷积神经网络的手写数字识别系统。该系统能快速实现手写数字识别,成功识别率高。缺点:只能正确识别单个数字,图像预处理还不够,没有进行图像分割,读者也可以自行添加,进行完善。

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

还可以查看混淆矩阵,

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

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

相关参考资料:

一、环境准备

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")

结果如下:

代码解释:

#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")

结果如下:

代码解释: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")

结果如下:

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") #保存图

结果如下:

————————————

现在Python成为了炽手可热的一门语言,在如何快速入门的同时,如何进行高效的开发是一门语言非常重要的优势。我们收集马哥Python了超过2000名学员的意见和建议,对Python常用的框架进行了梳理,这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等。

Python目前主流的应用包括:Web开发、图形界面开发、系统网络运维、网络编程、科学数字计算、3D游戏开发,而我们特别针对这6个方向进行了框架和库的整理。

一、Python的几大主流Web开发框架

1.Django: Python Web应用开发框架

Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响。Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。

2.Bottle: 微型Python Web框架

Bottle是一个简单高效的遵循WSGI的微型python Web框架。说微型,是因为它只有一个文件,除Python标准库外,它不依赖于任何第三方模块。

3.Flask:也是一个Web应用框架

不同于Django它是轻量级Web应用框架。基于Werkzeug WSGI工具箱和Jinja2 模板引擎。Flask也被称为“microframework”,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数据库、窗体验证工具。 但是Flask是可以扩增的,你可以使用可以用Flask-extension增加前边没有的一些功能。

4.Tornado:异步非阻塞IO的Python Web框架

Tornado的全称是Torado Web Server,从名字上看就可知道它可以用作Web服务器,但同时它也是一个Python Web的开发框架。最初是在FriendFeed公司的网站上使用,FaceBook收购了之后便开源了出来。Tornado 和现在的主流 Web 服务器框架和大多数Python框架有着明显的区别:它是非阻塞式服务器,而且速度相当快。也是比较常被使用的Python开源框架之一。

Web2py:全栈式Web框架

Web2py是一个为Python语言提供的全功能Web应用框架,旨在敏捷快速的开发Web应用,具有快速、安全以及可移植的数据库驱动的应用,兼容Google App Engine。

webpy: 轻量级的Python Web框架

webpy的设计理念力求精简(Keep it simple and powerful),源码很简短,只提供一个框架所必须的东西,不依赖大量的第三方模块,它没有URL路由、没有模板也没有数据库的访问。

二、Python的爬虫框架

Scrapy:Python的爬虫框架

Scrapy是一个使用Python编写的,轻量级的,简单轻巧,并且使用起来非常的方便。

三、图形界面开发框架

PyQt

PyQt能够实现高人气Qt库,因此如果大家熟知如何利用其它语言进行Qt开发,那么上手PyQt也不会出现什么障碍。其能够让Python应用具备跨平台外观风格与使用感受,同时继承Qt社区所带来的庞大知识支持与工具选项。

PyQt同时提供商用与GPL许可(这一点与Qt项目本身有所不同),感兴趣的朋友也可点击此处了解与PyQt许可相关的常见问题(英文原文)。

Tkinter

如果要为Python选出一款能够称得上“标准”的GUI工具包,那么答案应该是Tkinter。Tkinter是一款以Tcl/Tk为基础的打包工具,而后者则属于诞生自上世纪九十年代初的高人气图形界面与语言组合。Tkinter的最大优势在于拥有丰富的资源,其中包括文本与代码示例以及庞大的用户社区。通过示例,我们能够轻松上手这套图形界面实现方案。

Tkinter遵循Python许可,同时基于Tcl/Tk的BSD许可。

WxPython

WxPython 将针对C++的wxWidgets跨平台GUI库带给了Python。WxPython是一套较为现代的方案,其外观的原生程度高于Tkinter,这主要归功于其更倾向于针对不同系统平台建立控件成果。其易于上手,同时拥有快速发展的开发者社区。不过大家需要自行将wxPython与应用相绑定,因为其无法通过Python自动进行安装。

WxPython采用其父项目wxWindows的库许可,这一许可获得了OSI批准。

四、Python系统运维常用库

能够实现获取系统运行的进程和系统利用率(内存,CPU,磁盘,网络等),主要用于系统监控,分析和系统资源及进程的管理。

3、dnspython(http://dnspython.org)Python实现的一个DNS工具包。

4、difflib:difflib作为Python的标准模块,无需安装,作用是对比文本之间的差异。

5、filecmp:系统自带,可以实现文件,目录,遍历子目录的差异,对比功能。

6、smtplib:发送电子邮件模块

7、pycurl(http://pycurl.sourceforge.net)是一个用C语言写的libcurl Python实现,功能强大,支持的协议有:FTP,HTTP,HTTPS,TELNET等,可以理解为Linux下curl命令功能的Python封装。

8、XlsxWriter:操作Excel工作表的文字,数字,公式,图表等。

9、rrdtool:用于跟踪对象的变化,生成这些变化的走走势图

10、scapy(http://www.wecdev.org/projects/scapy/)是一个强大的交互式数据包处理程序,它能够对数据包进行伪造或解包,包括发送数据包,包嗅探,应答和反馈等功能。

11、Clam Antivirus免费开放源代码防毒软件,pyClamad,可以让Python模块直接使用ClamAV病毒扫描守护进程calmd。

12、pexpect:可以理解成Linux下expect的Python封装,通过pexpect我们可以实现对ssh,ftp,passwd,telnet等命令行进行自动交互,而无需人工干涉来达到自动化的目的。

13、paramiko是基于Python实现的SSH2远程安装连接,支持认证及密钥方式。可以实现远程命令执行,文件传输,中间SSH代理等功能。相对于Pexpect,封装的层次更高,更贴近SSH协议的功能,官网地址:http://paramiko.org(依赖:Crypto,Ecdsa,Python开发包python-devel)

14、fabric是基于Python实现的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括命令执行,文件上传,下载及完整执行日志输出等功能。Fabric在paramiko的基础上做了更高一层的封装,操作起来更加简单。官网地址:http://www.fabfile.org(依赖setuptools,Crypto,paramiko包支持)

15、CGIHTTPRequestHandler实现对CGI的支持。

16、ansible(http://www.ansibleworks.com/)一种集成IT系统的配置管理,应用部署,执行特定任务的开源平台。基于Python实现,由Paramiko和PyYAML两个关键模块构建。Ansibl与Saltstack最大的区别是Ansible无需在被控主机上部署任何客户端,默认直接通过SSH通道进行远程命令执行或下发功能。

17、YAML:是一种用来表达数据序列的编程语言。

18、playbook:一个非常简单的配置管理和多主机部署系统。

19、saltstack(http://saltstack.com)是一个服务器基础架构集中化管理平台,一般可以理解为简化版的puppet和加强版的func。Saltstack基于Python语言实现,结合轻量级消息队列ZeroMQ,与Python每三方模块(Pyzmq,PyCrypto,Pyjinja2,python-msgpack和PyYAML等)构建。

20、func,为解决集群管理,监控问题需设计开发的系统管理基础框架。

四、Python科学数字计算的框架

Python中的数据科学计算库有Numpy、Scipy、pandas、matplotlib

Numpy是一个基础性的Python库,为我们提供了常用的数值数组和函数。numpy(Numerical Python extensions)是一个第三方的Python包,用于科学计算。这个库的前身是1995年就开始开发的一个用于数组运算的库。经过了长时间的发展,基本上成了绝大部分Python科学计算的基础包,当然也包括所有提供Python接口的深度学习框架。

Scipy是Python的科学计算库,对Numpy的功能进行了扩充,同时也有部分功能是重合的。Numpy和Scipy曾经共享过基础代码。

pandas是一个流行的开源Python项目,它的名称取panel data(面板数据,一个计量经济学的术语)和Python data analysis(Python数据分析)的意思。matplotlib是一个基于Numpy的绘图库。

Matplotlib是Python中最常用的可视化工具之一,可以非常方便地创建海量类型地2D图表和一些基本的3D图表。Matplotlib最早是为了可视化癫痫病人的脑皮层电图相关的信号而研发,因为在函数的设计上参考了MATLAB,所以叫做Matplotlib。Matplotlib首次发表于2007年,在开源和社区的推动下,现在在基于Python的各个科学计算领域都得到了广泛应用。Matplotlib的原作者John D. Hunter博士是一名神经生物学家,2012年不幸因癌症去世,感谢他创建了这样一个伟大的库。

四、Python的3D游戏开发框架

Pygame是跨平台Python模块,专为电子游戏设计。包含图像、声音。pygame建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚。基于这样一个设想,所有需要的游戏功能和理念都(主要是图像方面)都完全简化为游戏逻辑本身,所有的资源结构都可以由高级语言提供,如Python。

ocos2d-python上面很多都用pyglet这个库的,里面主要的精灵什么的也是针对pyglet的封装,另外还封装了些音频库什么的。

五、Python的其他流行的开发框架

Diesel:基于Greenlet的事件I/O框架

Diesel提供一个整洁的API来编写网络客户端和服务器。支持TCP和UDP。

Cubes:轻量级Python OLAP框架

Cubes是一个轻量级Python框架,包含OLAP、多维数据分析和浏览聚合数据(aggregated data)等工具。

Kartograph.py:创造矢量地图的轻量级Python框架

Kartograph是一个Python库,用来为ESRI生成SVG地图。Kartograph.py目前仍处于beta阶段,你可以在virtualenv环境下来测试。

Pulsar:Python的事件驱动并发框架

Pulsar是一个事件驱动的并发框架,有了pulsar,你可以写出在不同进程或线程中运行一个或多个活动的异步服务器。

Falcon:构建云API和网络应用后端的高性能Python框架

Falcon是一个构建云API的高性能Python框架,它鼓励使用REST架构风格,尽可能以最少的力气做最多的事情。

Dpark:Python版的Spark

DPark是Spark的Python克隆,是一个Python实现的分布式计算框架,可以非常方便地实现大规模数据处理和迭代计算。DPark由豆瓣实现,目前豆瓣内部的绝大多数数据分析都使用DPark完成,正日趋完善。

Buildbot:基于Python的持续集成测试框架

Buildbot是一个开源框架,可以自动化软件构建、测试和发布等过程。每当代码有改变,服务器要求不同平台上的客户端立即进行代码构建和测试,收集并报告不同平台的构建和测试结果。

Zerorpc:基于ZeroMQ的高性能分布式RPC框架

Zerorpc是一个基于ZeroMQ和MessagePack开发的远程过程调用协议(RPC)实现。和 Zerorpc 一起使用的 Service API 被称为 zeroservice。Zerorpc 可以通过编程或命令行方式调用。

好了,最后我们再来看看,到底是哪些人学习呢?

目前来学的人群分为以下几类:

第一类:入行编程新手:大学刚毕业或者其他行业转岗,想从事编程开发的工作,目前认为Python比较火,想入行;

第二类:Linux系统运维人员:Linux运维以繁杂著称,对人员系统掌握知识的能力要求非常高,那么也就需要一个编程语言能解决自动化的问题,Python开发运维工作是首选,Python运维工资的薪资普遍比Linux运维人员的工资高。

第三类:做数据分析或者人工智能:不管是常见的大数据分析或者一般的金融分析、科学分析都比较大程度的应用了数据分析,人工智能的一些常见应用也使用了Python的一些技术。

第四类:在职程序员转Python开发:平常只关注div+css这些页面技术,很多时候其实需要与后端开发人员进行交互的,现在有很多Java程序在转到Python语言,他们都被Python代码的优美和开发效率所折服

第五类:其他:一些工程师以前在做很多SEO优化的时候,苦于不会编程,一些程序上面的问题,得不到解决,只能做做简单的页面优化。 现在学会Python之后,可以编写一些查询收录,排名,自动生成网络地图的程序,解决棘手的SEO问题

如果你有更好的建议,欢迎留言和讨论。

你可能感兴趣的:(python图形编程代码大全)