深度图像转换为灰度图

    Mat src = imread("path", IMREAD_UNCHANGED); //对于深度为8位的普通深度图,IMREAD_UNCHANGED可以省略,若原始深度图像的深度为16位,不能省略,否则src会成为三通道的色彩图像
    Mat Gray = Mat(src.rows, src.cols, CV_8UC1);

    for (size_t i = 0; i < src.rows; i++)
    {
        uchar* data_gray = Gray.ptr(i);
        ushort* data_src = src.ptr(i); //16位用ushort,如果为8位则改为uchar
        for (size_t j = 0; j < src.cols; j++)
        {
            if (data_src[j]<max && data_src[j]>min) //max,min表示需要的深度值的最大/小值
            {
                data_gray[j] = (data_src[j] - min) / (max - min) * 255.0f;
            }
            else
            {
                data_gray[j] = 255;
            }
        }
    }
    imwrite("path", Gray);
    imshow("gray", Gray);
    waitKey(0);

你可能感兴趣的:(OpenCV)