C++使用python的API

看板Python作者 (...)時間13年前 (2012/12/20 23:43), 編輯推噓6(6021)
留言27則, 11人參與, 最新討論串1/1
各位好! (我沒有學過 python,所以下面的問題如果很蠢,請直接糾正我!) 我想要寫一段 C++ 程式碼, 讀入 .wav 檔案,把聲音訊號儲存在陣列裡面,然後進行一些訊號處理的工作。 因為 C++ 沒有內建這樣的函式庫,而 python 的函式庫相當豐富, 所以我就想到可以在 C++ 程式碼裡面,使用 python 來讀檔。 先用功能強大的 python 處理輸出入,後用效率較高的 C++ 進行運算,應該是個好方法! 可是我應該怎麼做呢?我連要安裝什麼軟體都弄不清楚... orz 我該閱讀哪些東西,才能學到所有必要的知識? 麻煩大家指點! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.225.136.213

12/20 23:49, , 1F
C++ 使用 Python 函式庫是很困難的事情(甚至不可能),
12/20 23:49, 1F

12/20 23:50, , 2F
一般都是反過來用 C++(或比較常見是用 C)擴充 Python
12/20 23:50, 2F

12/20 23:50, , 3F
至於需要什麼...你需要完整的 Python 環境(官網安裝包裝
12/20 23:50, 3F

12/20 23:51, , 4F
反過來python用C函式庫則不難 關鍵字ctypes
12/20 23:51, 4F

12/20 23:51, , 5F
下去就差不多了), 以及一個把 C++ 包起來送給 Python 的
12/20 23:51, 5F

12/20 23:52, , 6F
工具 -- Boost.Python 是個常見的選擇
12/20 23:52, 6F
http://docs.python.org/2/extending/embedding.html 這個網頁應該是 C++ 使用 Python 吧? 所以這是很困難的事情囉... orz 困難的地方在於哪裡呢?例如環境設定之類的?

12/21 00:09, , 7F
... 為什麼不直接找 C++ 的工具就好了
12/21 00:09, 7F
因為 C++ 沒有內建相關函式庫,沒有統一標準, 而 python audio api 似乎是官方統一標準的?(不太確定) 因為我想寫教學文件,可能會有滿多人閱讀、動手做,所以有個統一標準可循會比較好! 另外也聽說 python 比較容易上手,適合非本科系學生, 國外一些計算機概論課程也是教 python,所以就想試看看 python!

12/21 10:57, , 8F
Python.h 是 C API(當然 C++ 本來就可以用 C 是沒錯..)
12/21 10:57, 8F

12/21 10:58, , 9F
除非你之前有寫過 C 的物件導向, 不然整個用起來就是很卡
12/21 10:58, 9F
我沒有寫過 C 的物件導向耶,老實說我對 C/C++ 都不是很熟... 如果這種方式,各位專家認為它會卡卡的, 那麼我應該會改用 python call c++ 而不是 c++ call python ~

12/21 14:44, , 10F
應該就是看妳自己貼的官方文件吧 我晚點也要試試C++連py
12/21 14:44, 10F
如果有試出來麻煩也教我一下怎麼做 >"<

12/21 16:40, , 11F
google 一下就有了
12/21 16:40, 11F

12/21 16:41, , 12F
12/21 16:41, 12F

12/21 16:42, , 13F
hmm
12/21 16:42, 13F

12/21 16:42, , 14F
我會錯意了
12/21 16:42, 14F

12/21 16:43, , 15F
我猜你要的是 cython 之類的
12/21 16:43, 15F
這個好像是另一種神奇的語言???

12/21 21:15, , 16F
可能要先確定你的需求
12/21 21:15, 16F
我的需求:就如正文所述,可以讀/播放聲音檔案就好了。有官方標準API就更好! 程式碼主要是用來教學/推廣用的。 我想了解看看,如果用 python 的話,會有哪些比較好的做法, 看看哪一種比較方便、比較容易操作,再決定用哪一種方式。 最後也可能決定直接整支程式都用 python 寫 XD

12/22 03:00, , 17F
要給非本科系教學那就別用 C++ 吧,嚇走一堆人
12/22 03:00, 17F
真的嗎?我一直以為一般民眾對 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。

12/22 10:37, , 18F
要做訊號處理的話 matlab也是一個不錯的選擇
12/22 10:37, 18F
我一開始學聲音訊號處理就是看 matlab 的程式碼!!! 推薦下面這網頁: http://mirlab.org/jang/books/audioSignalProcessing/ 最大缺憾就是 matlab 要錢 XD 還有一個缺憾就是 matlab 很多東西都已經包好好,沒辦法呈現太多細節。 至於好處是畫圖表很方便! 另外想偷偷問一下 openAL 好不好用 (這個問題好像不適合在這個板問 XD) ※ 編輯: DJWS 來自: 36.225.136.125 (12/22 10:54)

12/22 18:23, , 19F
知名度和上手度是兩回事
12/22 18:23, 19F

12/23 16:59, , 20F
有道理!
12/23 16:59, 20F

12/24 00:01, , 21F
matlab要錢就用octave,幾乎compatible
12/24 00:01, 21F

12/24 09:47, , 22F
不過速度真的有差... XD
12/24 09:47, 22F

12/24 10:00, , 23F
除非有向後相容需求, 不然與其用 Octave 不如乾脆就用
12/24 10:00, 23F

12/24 10:00, , 24F
Python 就好啦...
12/24 10:00, 24F
我也覺得直接用 python 比較單純一點~

12/25 00:33, , 25F
swig應該可以滿足你的需求
12/25 00:33, 25F

12/25 00:37, , 26F
但是最快的方式應該還是用python import openal ...
12/25 00:37, 26F

12/25 00:39, , 27F
要畫圖的話可以用 matplotlib
12/25 00:39, 27F
感謝!長了很多知識! swig 看起來超猛,什麼語言通通都可以黏在一起,竟然有這麼神奇的工具... 另外一方面,既然要 python import openal,那我其實也可以 c++ import openal !? 我想我得研究一下 openal 到底好不好用,再來做決定。 ※ 編輯: DJWS 來自: 36.225.134.173 (12/25 23:48)
文章代碼(AID): #1Gqp8Puc (Python)
文章代碼(AID): #1Gqp8Puc (Python)