作者DJWS (...)
看板Python
标题C++使用python的API
时间Thu Dec 20 23:43:16 2012
各位好! (我没有学过 python,所以下面的问题如果很蠢,请直接纠正我!)
我想要写一段 C++ 程式码,
读入 .wav 档案,把声音讯号储存在阵列里面,然後进行一些讯号处理的工作。
因为 C++ 没有内建这样的函式库,而 python 的函式库相当丰富,
所以我就想到可以在 C++ 程式码里面,使用 python 来读档。
先用功能强大的 python 处理输出入,後用效率较高的 C++ 进行运算,应该是个好方法!
可是我应该怎麽做呢?我连要安装什麽软体都弄不清楚... orz
我该阅读哪些东西,才能学到所有必要的知识?
麻烦大家指点!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 36.225.136.213
1F:→ uranusjr:C++ 使用 Python 函式库是很困难的事情(甚至不可能), 12/20 23:49
2F:→ uranusjr:一般都是反过来用 C++(或比较常见是用 C)扩充 Python 12/20 23:50
3F:→ uranusjr:至於需要什麽...你需要完整的 Python 环境(官网安装包装 12/20 23:50
4F:推 chchwy:反过来python用C函式库则不难 关键字ctypes 12/20 23:51
5F:→ uranusjr:下去就差不多了), 以及一个把 C++ 包起来送给 Python 的 12/20 23:51
6F:→ uranusjr:工具 -- Boost.Python 是个常见的选择 12/20 23:52
http://docs.python.org/2/extending/embedding.html
这个网页应该是 C++ 使用 Python 吧? 所以这是很困难的事情罗... orz
困难的地方在於哪里呢?例如环境设定之类的?
7F:→ legnaleurc:... 为什麽不直接找 C++ 的工具就好了 12/21 00:09
因为 C++ 没有内建相关函式库,没有统一标准,
而 python audio api 似乎是官方统一标准的?(不太确定)
因为我想写教学文件,可能会有满多人阅读、动手做,所以有个统一标准可循会比较好!
另外也听说 python 比较容易上手,适合非本科系学生,
国外一些计算机概论课程也是教 python,所以就想试看看 python!
8F:→ uranusjr:Python.h 是 C API(当然 C++ 本来就可以用 C 是没错..) 12/21 10:57
9F:→ uranusjr:除非你之前有写过 C 的物件导向, 不然整个用起来就是很卡 12/21 10:58
我没有写过 C 的物件导向耶,老实说我对 C/C++ 都不是很熟...
如果这种方式,各位专家认为它会卡卡的,
那麽我应该会改用 python call c++ 而不是 c++ call python ~
10F:推 rodion:应该就是看你自己贴的官方文件吧 我晚点也要试试C++连py 12/21 14:44
如果有试出来麻烦也教我一下怎麽做 >"<
11F:推 retard:google 一下就有了 12/21 16:40
13F:→ retard:hmm 12/21 16:42
14F:→ retard:我会错意了 12/21 16:42
15F:→ retard:我猜你要的是 cython 之类的 12/21 16:43
这个好像是另一种神奇的语言???
16F:推 plover:可能要先确定你的需求 12/21 21:15
我的需求:就如正文所述,可以读/播放声音档案就好了。有官方标准API就更好!
程式码主要是用来教学/推广用的。
我想了解看看,如果用 python 的话,会有哪些比较好的做法,
看看哪一种比较方便、比较容易操作,再决定用哪一种方式。
最後也可能决定直接整支程式都用 python 写 XD
17F:→ legnaleurc:要给非本科系教学那就别用 C++ 吧,吓走一堆人 12/22 03:00
真的吗?我一直以为一般民众对 C/C++ 的接受程度应该是最高的了。
程式语言补习班也都有 C/C++ 的课程,python 相对之下比较小众。
http://www.csie.ntu.edu.tw/train/course_program.php
http://www.pcschool.com.tw/learnservice/courselist.aspx?id=31
正因为听说 python 很强大却不流行,才想说也许可以试试 python。
18F:推 flarehunter:要做讯号处理的话 matlab也是一个不错的选择 12/22 10:37
我一开始学声音讯号处理就是看 matlab 的程式码!!! 推荐下面这网页:
http://mirlab.org/jang/books/audioSignalProcessing/
最大缺憾就是 matlab 要钱 XD
还有一个缺憾就是 matlab 很多东西都已经包好好,没办法呈现太多细节。
至於好处是画图表很方便!
另外想偷偷问一下 openAL 好不好用 (这个问题好像不适合在这个板问 XD)
※ 编辑: DJWS 来自: 36.225.136.125 (12/22 10:54)
19F:→ legnaleurc:知名度和上手度是两回事 12/22 18:23
20F:→ DJWS:有道理! 12/23 16:59
21F:→ Reylod:matlab要钱就用octave,几乎compatible 12/24 00:01
22F:→ kdjf:不过速度真的有差... XD 12/24 09:47
23F:→ uranusjr:除非有向後相容需求, 不然与其用 Octave 不如乾脆就用 12/24 10:00
24F:→ uranusjr:Python 就好啦... 12/24 10:00
我也觉得直接用 python 比较单纯一点~
25F:推 marksmanz:swig应该可以满足你的需求 12/25 00:33
26F:→ marksmanz:但是最快的方式应该还是用python import openal ... 12/25 00:37
27F:→ marksmanz:要画图的话可以用 matplotlib 12/25 00:39
感谢!长了很多知识!
swig 看起来超猛,什麽语言通通都可以黏在一起,竟然有这麽神奇的工具...
另外一方面,既然要 python import openal,那我其实也可以 c++ import openal !?
我想我得研究一下 openal 到底好不好用,再来做决定。
※ 编辑: DJWS 来自: 36.225.134.173 (12/25 23:48)