0
在许多教程e.g. this one中,显示了如何用逗号分隔列表初始化一个opencv Mat。但是,当我尝试用多维Mat来做这件事时,我感到很奇怪。多维cv的逗号分隔初始值设定:: Mat
#include "opencv2/core/core.hpp"
#include <iostream>
int main() {
cv::Mat vect = (cv::Mat_<double>(2, 2, CV_8UC3) << 1,2,3,4,5,6,7,8,9,10,11,12);
std::cout << "vect = " << std::endl << " " << cv::format(vect,"python") << std::endl;
return 12345;
}
输出:
vect =
[[1, 2],
[3, 4]]
可以在一个明确初始化多维垫?
编辑:此外,我在其他方式初始化时遇到麻烦。
int main() {
int data[2][2][3] = {
{
{1,2,3},
{4,5,6}
},
{
{7,8,9},
{10,11,12}
}
};
cv::Mat vect = cv::Mat(2, 2, CV_8UC3, data);
std::cout << "vect = " << std::endl << " " << cv::format(vect,"python") << std::endl;
return 54321;
}
输出:
vect =
[[[1, 0, 0], [0, 2, 0]],
[[0, 0, 3], [0, 0, 0]]]
因此,在[0][0][1]
在我的输入数组元素在垫[0][1][1]
结束?这里发生了什么......