在自己的 cpp 中加入以下代码:
namespace cv {
template <typename _Scalar, int _Dim>
class DataType<Eigen::Matrix<_Scalar, _Dim, 1>> {
public:
typedef Eigen::Matrix<_Scalar, _Dim, 1> value_type;
typedef Eigen::Matrix<typename DataType<_Scalar>::work_type, _Dim, 1> work_type;
typedef _Scalar channel_type;
enum { generic_type = 0,
channels = _Dim,
fmt = traits::SafeFmt<channel_type>::fmt + ((channels - 1) << 8)
};
typedef Vec<channel_type, channels> vec_type;
};
} //namespace cv
然后就可以像 cv::Point_<T>
、cv::Point3_<T>
那样使用 cv::FileStorage
来读写 Eigne::Vector2f
、Eigen::Vector3d
等类型,包括相关序列类型 std::vector<...>
和 std::vector<std::vector<...>>