C++頭文件的順序
在同時使用opencv和Eigen庫時會遇到數據的相互轉換的問題,即使用
eigen2cv()
或cv2eigen()
之類的函數,這時要注意一個隱藏的大坑,那就是Eigen的頭文件要放在opencv的頭文件之前,否則會出錯!!!具體原因筆者沒有深究,暫且mark一下,以後編程的時候也要注意:
- 系統的頭文件要放在最前面;
- 其次是語言相關的;
- 然後比較古老的第三方庫頭文件;
- 比較新的第三方庫頭文件;
- 最後纔是自定義的頭文件。
正確的方式如下:
……
#include <./eigen3/Eigen/Dense>//這兩個頭文件必須放在opencv頭文件之前
#include <eigen3/Eigen/Core>
#include <opencv2/opencv.hpp>
#include <opencv2/core/eigen.hpp>
……