我有一个cv :: Mat图像,我正在考虑使用相同大小的第二个cv :: Mat,但每个条目存储一个与该像素相对应的复杂数据结构。这可以用cv :: Mat完成,或者是我唯一可以在那里打开的向量向量吗?
答案 0 :(得分:1)
查看cv::Mat
的文档,尤其是构造函数和type
,channels
和depth
方法,它似乎只能包含简单的OpenCV数据类型(8/16/32位整数,32/64位浮点数,或者这些的1/2/3/4元组,当然不是混合)。
但即便如此,我也不会建议二维数组/矩阵/图像的向量向量(其中所有行具有相同数量的列),而是一个简单的1D向量,其中包含一些简单的索引魔法从2D到1D的映射。这有更好的内存局部性和分配行为。
答案 1 :(得分:0)
这取决于您的数据结构的“复杂程度”。您只能使用其元素具有相同类型的结构。
Vec<n, type>
以示例
Vec<6,float> vv;
//fill vector
vv.push_back(Vec6f(1,2,3,4,5,6);
Mat m(vv);
Vec<6,float> vec = m.at<Vec6f>(1);
正如克里斯蒂安所说,你不能混合类型(有一个浮动通道和一个char通道)