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

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

cv::Mat EnergyImage;

它是二维的,尺寸为 2x6000000

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

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

【问题讨论】:

    标签: c++ visual-studio opencv


    【解决方案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。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 2014-07-21
    相关资源
    最近更新 更多