2023年7月10日 星期一

OpenCV C++ 初探

為了確認到底是 Python code 還有優化空間還是單純的 Python 和 C++ 版本差異?

今天將手邊一個 OpenCV 測試程式從 Python 版改成 C++ 版,由於是第一次嘗試使用 C++ OpenCV,記錄一下撞牆的心得XD


01. Mat 運算如果值不如預期,看是否要將 data type 從 float 改成 double。

02. cv::SVD::compute(A, w, u, vt, cv::SVD::FULL_UV),如果答案與 Python 版本不一樣,試著指定 flag。

03. Mat.reshape(cn, newdimension) 的意思如下:
cn 表示 channel,0 就表示不變。
newdimension 表示新的 row。

(1, 9) -> (3, 3) 
Mat.reshape(0, 3) or Mat.reshape(1, 3)

04. Mat 計算很容易觸發 exception,故程式會不正常結束,可以考慮加上 try catch 捕捉錯誤。

try {

} catch ( cv::Exception &e) {
      const char *msg = e.what( );
      std::cout << "exception caught: " << msg << std::endl;
}

沒有留言:

張貼留言