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