如何将3D矢量转换为cv::Mat
How to convert a 3D vector to a cv::Mat
我试图从浮点数的3D向量(vGraph1)填充一个OpenCV Mat (float)。然而,产生的OpenCV Mat (test)没有正确填充,即只有第一列填充正确的值,而其余的是垃圾值(-4.32e+08)。我通过将Mat写入文本文件来确认错误。我做错了什么吗?请建议。谢谢。
int nStates = 9; const int rows = 10; const int cols = 10;
vector < vector < vector<float> > > vGraph1;
for(int iii = 0; iii < rows; iii++){
vGraph1.push_back(vector<vector<float> >());
for(int jjj = 0; jjj < cols; jjj++){
vGraph1[iii].push_back(vector<float>());
for(int kkk = 0; kkk < nStates; kkk++){
vGraph1[iii][jjj].push_back(rand());
cout << vGraph1[iii][jjj][kkk] << " ";
}
cout << endl;
}
}
cout << "OpenCV Mat n" << endl;
Mat test(rows, cols, CV_MAKE_TYPE(CV_32F, nStates));
for(int iii = 0; iii < rows; iii++){
float *ptest = test.ptr<float>(iii);
for( int jjj = 0; jjj < cols; jjj++){
for (int kkk = 0; kkk < nStates; kkk++){
ptest[kkk] = vGraph1[iii][jjj][kkk];
cout << ptest[kkk] << " ";
}
cout << endl;
}
}
FileStorage Save("Mat.txt", FileStorage::WRITE);
Save << "Node" << test;
Save.release();
我设法得到以下工作解决方案;我希望它是正确的。
int nStates = 9; const int rows = 10; const int cols = 10;
vector < vector < vector<float> > > vGraph1;
for(int iii = 0; iii < rows; iii++){
vGraph1.push_back(vector<vector<float> >());
for(int jjj = 0; jjj < cols; jjj++){
vGraph1[iii].push_back(vector<float>());
for(int kkk = 0; kkk < nStates; kkk++){
vGraph1[iii][jjj].push_back(rand());
cout << vGraph1[iii][jjj][kkk] << " ";
}
cout << endl;
}
}
cout << "OpenCV Mat n" << endl;
Mat test(rows, cols, CV_MAKE_TYPE(CV_32F, nStates));
for(int iii = 0; iii < rows; iii++){
float *ptest = test.ptr<float>(iii);
for( int jjj = 0; jjj < cols; jjj++){
for (int kkk = 0; kkk < nStates; kkk++){
ptest[nStates*jjj + kkk] = vGraph1[iii][jjj][kkk];
cout << ptest[nStates*jjj+kkk] << " ";
}
cout << endl;
}
}
FileStorage Save("Mat.txt", FileStorage::WRITE);
Save << "Node" << test;
Save.release();
相关文章:
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 将CHW格式的浮点向量转换为cv::Mat
- 将 cv::mat 转换为 QImage
- 将 cv::Mat 转换为 std::vector 的通用函数
- 将 opencv 从 2.4.13 转换为 3.3.1 时由 cv::resize() 引起的运行错误
- 如何将 cv::Mat 转换为 vtkImageData?
- 如何将 vtkImageData 转换为 cv::Mat?
- Qt-工作线程崩溃时将cv::Mat转换为QImage
- 将 cv::Mat 转换为无符号的 int 像素
- 如何在不复制数据的情况下将 cv::Mat 转换为 2d 标准::矢量
- 转换 cv::mat 转换为 std::矢量<double>并发症
- 如何将屏幕截图位图转换为 cv::Mat
- 如何从 cv::Mat (C++) 转换为 tf.placeholder(C++ Boost.Python)
- CV :: MAT如何从/转换为GLM :: MAT4
- 无法将参数 8 从 'int' 转换为 'cv::HOGDescriptor::HistogramNormType'
- 如何转换 cv:垫子的类型
- 将CV :: MAT转换为STD :: vector而无需复制
- 如何将atl :: cimage转换为cv :: mat
- 将非类非数组 prvalue 转换为符合 cv 条件的类型是否合法?
- 修复 cv::转换点从均匀错误