如何使用 CPP 加速 DCT 運算
本篇文章來自 想知道網戀對象有沒有修圖嗎?試試看這款修圖偵測機器人! 的續篇, 因為 Python 的方法實在是太慢了,所以我一直在尋求加速的方法。 俗話說得好: 要看一個人怎麼做立委, 就要看他怎麼做立委! 不是,我是說有些人可能不適合做立委、適合做總統! 舉個例子: 拿 Python 去做文字處理就很開心,但是拿 C/CPP 去做文字處理你就準備腦血栓; 反之拿 Python 做數學運算也會慢到中風,但是拿 C/CPP 做數學運算就風馳電掣。 所以我用 CPP 實現了需要數學運算的 DCT 方法, 主要是使用 extern "C" 方法來與 Python 對接,在 Python 那邊設定好輸出入的參數。 這邊比較需要注意的是因為我選用的讀圖方式是 OpenCV 的 CPP 函式庫, 所以寫 Makefile 的時候需要注意把 OpenCV 包進來。 在編譯的過程中 Makefile 也會發生抓不到 g++ 的時候 (想好好編譯真難 😇) 總之做了一點 Soft-link 還有 Dirty work 後終於能正確編譯了。 因為我是用"Single Thread"、"Mask" 的方法來實現 DCT 變換的, 所以讓我們來看看與 Python 版 與 CPP 版 比較效果如何: CPP 版的運算速度比 Python 版快了近六倍, 有夠優質! 相關開源我更新在: https://github.com/wuyiulin/GraphAppBot 想要測試一下這個服務: https://t.me/DynamicGraphApp_bot 如果有任何問題歡迎聯絡我: wuyiulin@gmail.com