OpenCV用户定义类型的矩阵

Nil*_*Nil 7 c++ opencv

有没有办法在OpenCV 2.x中有一个用户定义类型的矩阵?就像是 :

cv::Mat_<KalmanRGBPixel> backgroundModel;
Run Code Online (Sandbox Code Playgroud)

我知道cv :: Mat <>是用于图像和数学的,但我想以矩阵形式保存数据.我不打算使用逆,转置,乘法等,它只用于存储数据.我希望它是矩阵形式,因为视频的每个帧的pixel_ij将链接到backgroundModel_ij.

我知道core.hpp中有一个DataType <_Tp>类需要为我的类型定义,但我不知道该怎么做.

编辑: KalmanRGBPixel只是cv :: KalmanFilter类的包装器.至于现在,它是唯一的成员.

... some functions ...
private:
    cv::KalmanFilter kalman;
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

ypn*_*nos 1

OpenCV 文档中解释了如何向 OpenCV 矩阵添加自定义类型。需要定义对应的cv::DataType.

\n\n

https://docs.opencv.org/master/d0/d3a/classcv_1_1DataType.html

\n\n
\n

DataType 类基本上用于提供此类原始数据类型的描述,而无需向相应的类添加任何字段或方法(实际上不可能向原始 C/C++ 数据类型添加任何内容)。这种技术在 C++ 中称为类特征。使用的不是 DataType 本身,而是其专用版本 [\xe2\x80\xa6] 该类的主要目的是将编译时类型信息转换为 OpenCV 兼容的数据类型标识符 [\xe2\x80\xa6]

\n
\n\n

(是的,我终于在这个帖子中回答了这个问题!)

\n