【发布时间】:2017-06-14 20:34:19
【问题描述】:
在 c++、Visual Studio 中,我有图像
cv::Mat EnergyImage;
它是二维的,尺寸为 2x6000000
我想将其转换为 2 张尺寸为 200x300x100(=6000000) 的图像,最好是两张 3d 图像。
如何重塑它并分别访问 2 张图片?
【问题讨论】:
标签: c++ visual-studio opencv
在 c++、Visual Studio 中,我有图像
cv::Mat EnergyImage;
它是二维的,尺寸为 2x6000000
我想将其转换为 2 张尺寸为 200x300x100(=6000000) 的图像,最好是两张 3d 图像。
如何重塑它并分别访问 2 张图片?
【问题讨论】:
标签: c++ visual-studio opencv
OpenCV 提供了 cv::Mat 构造函数 API,您可以在其中创建一个 n 维矩阵,其中每个维度中的任意 bin 如下:
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
}
【讨论】: