在Visual Studio中调整matC的大小

时间:2017-06-14 20:34:19

标签: c++ visual-studio opencv

在c ++,Visual Studio中,我有图像

cv::Mat EnergyImage;

是2D,尺寸为2x6000000

我想将其转换为尺寸为200x300x100(= 6000000)的2幅图像,最好说两张3D图像。

如何重塑它并分别访问2个图像?

1 个答案:

答案 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 
}