在 Visual Studio 中调整 mat openCV 的大小

Posted

技术标签:

【中文标题】在 Visual Studio 中调整 mat openCV 的大小【英文标题】:Resizing mat openCV in Visual Studio 【发布时间】:2017-06-14 20:34:19 【问题描述】:

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

cv::Mat EnergyImage;

它是二维的,尺寸为 2x6000000

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

如何重塑它并分别访问 2 张图片?

【问题讨论】:

【参考方案1】:

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 

【讨论】:

但是如何调整它的大小?通过这个 for 循环,我有 1x6000000 参数。但是如何将其调整为 200x300x100 ? 我更容易访问每一行,cv:: Mat mi1 = EnergyImage.row(1); cv:: Mat mi0 = EnergyImage.row(0);这 2 个向量的维度为 1x6000000。我想我没有清楚地写出我的问题,我只是想将此矢量调整大小(或重塑)为 3d mat。

以上是关于在 Visual Studio 中调整 mat openCV 的大小的主要内容,如果未能解决你的问题,请参考以下文章

为 Visual Studio 优化 windows XP

(工具技巧) —— Visual Studio Code页面放大缩小和字体的调整方式

(工具技巧) —— Visual Studio Code页面放大缩小和字体的调整方式

(Visual Studio 杂记) )—— Visual Studio 如何 设置 C++ 标准版本

(Visual Studio 杂记) )—— Visual Studio 如何 设置 C++ 标准版本

Visual Studio Code 调整字体大小