在OpenCV C ++中显示3维矩阵

时间:2015-02-10 13:44:41

标签: c++ opencv

如何展平3D矩阵并在2d内显示? 是否有简单的方法在3d中显示它?

编辑:

到目前为止,我只是简单地将图像平铺在第三维中:

void Flatten3DArray(const cv::Mat& In, cv::Mat& Out2d)
{
    CV_Assert(In.dims == 3);

    int rows = In.size[0];
    int cols = In.size[1];
    int third = In.size[2];


    int rowTiles = ceil(sqrt(third));
    int colTiles = ceil(sqrt(third));

    Out2d.create(rowTiles*rows, colTiles*cols, In.type());
    Out2d = Scalar(0);

    int thirdDimIdx = 0;
    for (int i = 0; i < rowTiles; ++i)
    {
        for (int j = 0; j < colTiles; ++j, ++thirdDimIdx)
        {

            if (thirdDimIdx >= third)
            {
                break;
            }

            Mat roi(Out2d(cv::Rect(j*cols, i*rows, cols, rows)));

            uint16_t *ind = (uint16_t*)In.data + thirdDimIdx * rows*cols; // sub-matrix pointer
            cv::Mat subMatrix(2, In.size, In.type(), ind);

            subMatrix.copyTo(roi);
        }
    }

}

有更好的方法吗?

0 个答案:

没有答案