影像處理

C++/CLI:使用 C++/CLI、FFmpeg …

前言 最近因為工作需要在 C/C++ 環境底下開發出影片檔讀取並撥放功能,由於有跨平台測試的需求 (Windows/Linux),最直覺想到的就是使用 FFmpeg。Windows 會用 C++/CLI CLR 開發視窗畫面;Linux 則是靠 MiniGUI 顯示到 LCD 模組上,這篇文章主要是紀錄我如何在 Visual Studio 中完成 CLR WinForm 簡易撥放功能,其實呼叫 FFmpeg 相關程式是參考網路上文章,幾乎是複製貼上了,只是還是需要修改許多東西才能正常執行,像是記憶體溢出,或是畫面顏色處理的問題等等。 這邊我不打算整理 FFmpeg 的用法,因為我也沒很熟悉,網 …

Python: GPU 加速 FFT DFT 計算

前言 之前讀碩班常常要用 FFT 來處理光學的問題,通常都是會用 MATLAB 來撰寫程式,如果矩陣比較大也可以直接用 MATLAB 的 gpuArray 指令,來用 GPU 加速運算,使用起來非常方便,但是到了 Python 就沒有內建這些加速功能,好在 Python 的優點就是有非常完整的套件可以幫助我完成一些原本在 MATLAB 的工作。 這邊會介紹兩種工具,分別是 CuPy 以及 PyVkFFT。 CuPy CuPy 是兼容 NumPy、SciPy 的 GPU 加速函式庫。簡單講就是 NumPy 的數學運算都可以直接轉換成 CuPy 的 API,所以要將原有的程式改寫成 GPU 加速會 …

VS C++:讀寫 CSV 的方法 (搭 …

前言 這禮拜要開始開發"Python訓練好的CNN權重移植到VS C++“上,由於我是用CNN來預測人臉特徵點,因此需要在圖片上顯示預測的結果,以確保模型移植成功。 為了能將預測結果在影像上標示出來,我一樣會在VS C++上使用OpenCV來幫我完成,也因此要在VS C++裡面建置OpenCV的環境,這部分之前就有安裝過可以參考之前文章。 為了先熟悉如何在VS C++上面標示特徵點出來,我試著在VS C++中讀取CSV檔,(這部分是參考網路上的程式,連結我放在最下面),讀完之後再將這些點用OpenCV繪製在影像上。 讀取 #include <fstream> …

人臉偵測:安裝 dlib 的 Python 環境

前言 在公司需要研究人臉辨識的東西,發現蠻多資料都會提到dlib這個套件,查了官網發現這是個C++的library,可用於機器學習、影像辨識、機器視覺等工作,也有提供Python API,感覺可以研究看看,說不定還能藉由它來建立人臉資料庫。 安裝 先用 anaconda 建立環境 conda create -n dlib python=3.6 進入虛擬環境 activate dlib 安裝套件 (除了裝dlib之外,姑且也將其他常用套件一併安裝) pip install dlib pip install opencv-python pip install matplotlib pip …

Python:常用的 OpenCV 指令

這裡簡單記錄自己在 Python 中常用的 OpenCV 指令。 Reading Image 利用 imread() 進行影像讀取。Opencv 讀圖都是採 BGR 格式。 src = "image.png" # 圖片的路徑 dst = cv2.imread(src) # bgr (3 channel) dst = cv2.imread(src, 0) # gray (1 channel) Showing Image 使用 imshow() 顯示影像。通常會配合 waitKey(0) 及 destroyAllWindows() 使用。 waitKey(0):等待使用者按下按鍵。 …