当从源代码编译OpenCV时,有CMake选项WITH_EIGEN,它说“包含Eigen3支持”.然而,文档中没有任何地方(或者通过谷歌,在这个问题上),我可以找出这是什么,以及如何使用它.我可以想象几个选择:
我可以继续使用cv :: mat,而像cv :: Mat :: inv()这样的函数会开始使用Eigen的算法吗?
或者,WITH_EIGEN标志基本上什么也不做,我需要将cv :: Mat转换为Eigen(或使用Eigen :: Map),然后手动使用Eigen的算法?
解决方法
在一起工作后,我可以提供答案:
除了使eigen-opencv可互操作性功能可用外,WITH_EIGEN标志什么也不做.
Can I just continue using cv::Mat,and certain functions (which ones?) like cv::Mat::inv() will start using the algorithms from Eigen?
不,cv :: Mat :: inv()没有智能逻辑,将使用OpenCV算法.
Or does the WITH_EIGEN flag basically do nothing and I need to convert the cv::Mat’s to Eigen (or use Eigen::Map) and then use Eigen’s algorithms manually?
正是这样才能走.我不一定建议使用cv2eigen()和eigen2cv().我使用Eigen :: Map来映射内存(无需复制任何代价)和cv :: Mat(void *,…)来映射数据.小心,但行/ col主要的标志和东西.