wxpython绘制音频效果


Posted in Python onNovember 18, 2019

本文实例为大家分享了wxpython绘制音频的具体代码,供大家参考,具体内容如下

#-*- coding: utf-8 -*-
 
################################################################################
## 使用wxPython的绘图模块wxPyPlot,需要数据可视化的时候,无需再借用其他的库或模块了
################################################################################
import numpy as np
import wx
import wx.lib.plot as wxPyPlot # 导入绘图模块,并命名为wxPyPlot
import wave
import pylab as pl
# 需要把数据封装进入MyDataObject中
def MyDataObject():
 # 50 个点的sin函数,用蓝色圆点表示
 data1 = 2.*np.pi*np.arange(100)/100.
 data1.shape = (50, 2)
 data1[:, 1] = np.sin(data1[:, 0])
 print ("debug:", data1.shape)
 markers = wxPyPlot.PolyMarker(data1, legend='Green Markers', colour='blue', marker='circle', size=1)
 # 50个点的cos函数,用红色表示
 data2 = 2.*np.pi*np.arange(100)/100.
 data2.shape = (50, 2)
 print ("debug: data2", len(data2))
 data2[:, 1] = np.cos(data2[:, 0])
 lines = wxPyPlot.PolySpline(data2, legend='Red Line', colour='red')
 GraphTitle = "Plot Data(Sin and Cos)"
 
 return wxPyPlot.PlotGraphics([markers, lines], GraphTitle, "X Axis", "Y Axis")
# 解析wav数据
def MyWavData(wav_filename=""):
 print('working')
 # 打开wav文档
 file = wave.open("mic4.wav", "r")
 # 读取格式信息
 # (nchannels, sampwidth,framerate, nframes, comptype, compname)
 params = file.getparams()
 nchannels, sampwidth, framerate, nframes = params[:4]
 print (nchannels, sampwidth, framerate, nframes)
 # 读取波形数据
 str_data = file.readframes(nframes)
 # 文件使用完毕,关闭文件
 file.close()
 # 将波形数据装换成数组
 wave_data = np.fromstring(str_data, dtype=np.short)
 wave_data.shape = (-1, 2)
 wave_data = wave_data.T # 矩阵转置
 time = np.arange(0, nframes) * (1.0 / framerate)
 # print ("debug: time:", len(time))
 # print ("debug: wave_data:", len(wave_data[0][0:len(time)]))
 # print ("debug: time:", time)
 # print ("debug: wave:", wave_data)
 time_and_wav = np.asarray([time, wave_data[0][0:len(time)]]).T
 print ("debug: len of time and wav: ", len(time_and_wav))
 print ("debug: time and wav: ", time_and_wav.shape)
 lines = wxPyPlot.PolySpline(time_and_wav, legend='Blue Line', colour='blue')
 GraphTitle = "the freq of wav file"
 return wxPyPlot.PlotGraphics([lines, ], GraphTitle, "time/s", "fre/Hz")
class TestFrame1(wx.Frame):
 def __init__(self, parent=None, id=wx.ID_ANY, title="Using wxPyPlot"):
  wx.Frame.__init__(self, parent, id, title, size=(800, 600))
  # 创建菜单栏
  self.mainmenu = wx.MenuBar()
  # 创建菜单
  menu = wx.Menu()
  menu.Append(100, 'Draw1', 'Draw plots1')
  self.Bind(wx.EVT_MENU, self.OnPlotDraw1, id=100)
  menu.Append(200, 'Draw_wav', 'Draw wav')
  self.Bind(wx.EVT_MENU, self.OnPlotDraw_wav, id=200)
  # 添加菜单到菜单栏
  self.mainmenu.Append(menu, '&Plot')
  # 设置菜单Bar
  self.SetMenuBar(self.mainmenu)
  # 创建状态栏,显示信息
  self.CreateStatusBar(2)
  self.pc = wxPyPlot.PlotCanvas(self) # 此处导入绘图面板
 
 def OnPlotDraw1(self, event):    # 绘图函数
  self.pc.Draw(MyDataObject())
 def OnPlotDraw_wav(self, event):
  self.pc.Draw(MyWavData())
def main():
 app = wx.App()
 # MyWavData()
 tf = TestFrame1()
 tf.Show()
 app.MainLoop()
# 测试wxPyPlot的代码
if __name__ == '__main__':
 main()

wxpython绘制音频效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现将英文单词表示的数字转换成阿拉伯数字的方法
Jul 02 Python
对Python 文件夹遍历和文件查找的实例讲解
Apr 26 Python
使用python读取.text文件特定行的数据方法
Jan 28 Python
python2和python3在处理字符串上的区别详解
May 29 Python
关于Python作用域自学总结
Jun 10 Python
python 进程 进程池 进程间通信实现解析
Aug 23 Python
python 用户交互输入input的4种用法详解
Sep 24 Python
Python大数据之从网页上爬取数据的方法详解
Nov 16 Python
Python内置方法实现字符串的秘钥加解密(推荐)
Dec 09 Python
MNIST数据集转化为二维图片的实现示例
Jan 10 Python
Python3 hashlib密码散列算法原理详解
Mar 30 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
Apr 14 Python
python导入不同目录下的自定义模块过程解析
Nov 18 #Python
解决django model修改添加字段报错的问题
Nov 18 #Python
python sorted方法和列表使用解析
Nov 18 #Python
在Django中实现添加user到group并查看
Nov 18 #Python
Django继承自带user表并重写的例子
Nov 18 #Python
Django自定义用户表+自定义admin后台中的字段实例
Nov 18 #Python
Django 实现Admin自动填充当前用户的示例代码
Nov 18 #Python
You might like
PHP中的MYSQL常用函数(php下操作数据库必备)
2010/09/12 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
2013/06/18 PHP
关于file_get_contents返回为空或函数不可用的解决方案
2013/06/24 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
2016/03/01 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
javascript对JSON数据排序的3个例子
2014/04/12 Javascript
jquery UI Datepicker时间控件的使用及问题解决
2016/04/28 Javascript
jquery获取form表单input元素值的简单实例
2016/05/30 Javascript
图文详解JavaScript的原型对象及原型链
2016/08/02 Javascript
详解AngularJS1.x学习directive 中‘& ’‘=’ ‘@’符号的区别使用
2017/08/23 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
2018/09/14 Javascript
ES6如何用一句代码实现函数的柯里化
2020/01/18 Javascript
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
2020/02/04 jQuery
Python 连连看连接算法
2008/11/22 Python
python实现数通设备端口监控示例
2014/04/02 Python
python使用KNN算法手写体识别
2018/02/01 Python
python实现自动获取IP并发送到邮箱
2018/12/26 Python
Python中extend和append的区别讲解
2019/01/24 Python
Django框架模板的使用方法示例
2019/05/25 Python
NumPy排序的实现
2020/01/21 Python
Python求凸包及多边形面积教程
2020/04/12 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
2020/09/01 Python
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
时尚休闲吧创业计划书
2014/01/25 职场文书
中秋节礼品促销方案
2014/02/02 职场文书
黄继光的英雄事迹材料
2014/02/13 职场文书
聚美优品励志广告词
2014/03/14 职场文书
幼儿园门卫岗位职责范本
2014/07/02 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
先进单位申报材料
2014/12/25 职场文书
交通事故起诉书
2015/05/19 职场文书
详解python网络进程
2021/06/15 Python
JS前端监控采集用户行为的N种姿势
2022/07/23 Javascript