在c ++,Visual Studio中,我有图像
cv::Mat EnergyImage;
是2D,尺寸为2x6000000
我想将其转换为尺寸为200x300x100(= 6000000)的2幅图像,最好说两张3D图像。
如何重塑它并分别访问2个图像?
答案 0 :(得分:0)
OpenCV提供cv::Mat
构造函数API,您可以在其中创建包含每个维度中任意二进制位的n维矩阵:
cv::Mat m = cv::Mat(1, 6000000, CV_8UC1, cv::Scalar(100));
int sizes[3] = {200, 300, 100};
cv::Mat multiDimMat = cv::Mat(3, sizes, CV_8UC1, &m.data[0]);
如果您只有一行的线性cv::Mat
,上面的代码就足够了,但由于您的输入cv::Mat
有2行,并且您希望每行有2个单独的cv::Mat
个对象,可以尝试:
for(int i = 0; i < m.rows; i++)
{
const uchar* mi = m.ptr<uchar>(i);
// Perform the same routine as above code
}