关闭

图像数据的拉伸显示

251人阅读 评论(0) 收藏 举报
分类:

1,本文主要是对float 类型的图像数据,进行的拉伸(拉伸到0-255)显示,用到opencv 库

// 本程序输入一个src float 类型的数据,经过数据的拉伸显示为图片, 用到opencv 库中的显示
//fileName 显示窗口的名字
// CV_32FC1 * n 维度的数据显示其中的一维
// src 为 若为CV_32FC1 则输入为 mat.data
// src 为float 类型的buffer 数据
// width src 的宽
// height src 的高
// channel 通道数
// showDim 要显示的通道
int convertStretch(char * fileName,float * src, int width, int height, int channel, int showDim)
{
    int i , j;
    float tmax,tmin;
    Mat temp = Mat(height, width, CV_8UC1);
    float * tempF = (float *)malloc(height * width * sizeof(float));

    tmax = src[0 + showDim];
    tmin = src[0 + showDim];
    float scale = 0;
    for(i = 0; i < height; i ++)
    {
        for(j = 0; j < width; j ++)
        {
            tempF[i * width + j] = src[(i * width + j) * channel + showDim];
            if(tmax < tempF[i * width + j])
            {
                tmax = tempF[i * width + j];
            }
            if(tmin > tempF[i * width + j])
            {
                tmin = tempF[i * width + j];
            }

        }
    }
    printf(" %s max= %f min = %f\n", fileName, tmax, tmin);
    scale = 255.0f / (tmax - tmin);
    for(i = 0; i < height; i ++)
    {
        for(j = 0; j < width; j ++)
        {
            temp.data[i * width + j] = (unsigned char)((int)((tempF[i * width + j] - tmin) * scale));

        }
    }

    imshow(fileName, temp);
    free(tempF);
    waitKey(0);
    return 0;

}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:12432次
    • 积分:662
    • 等级:
    • 排名:千里之外
    • 原创:52篇
    • 转载:12篇
    • 译文:2篇
    • 评论:1条
    文章分类
    最新评论