opencv绘制灰阶图

在这里插入图片描述
最近需要绘制灰阶图,写了一个opencv绘制灰阶图的函数

cv::Mat MakeColorMap(int bkgWidth, int bkgHeight, int mapNum, char *savePath) {
    if (savePath == NULL) {
        char *defaultPath = (char *) "/data/colorMap.png";
        savePath = defaultPath;
    }
    float mapWidth = (float) bkgWidth / ((float) mapNum);//色阶宽度
    uchar pixel = 0;
    cv::Mat img(bkgHeight, bkgWidth, CV_8UC4, cv::Scalar(0, 0, 0, 255));
    for (int i = 0; i < img.rows; i++) {
        for (int j = 0; j < img.cols; j++) {
            int level = (int) (j / mapWidth);
            pixel = (uchar) (level * ((255.0 / ((float) mapNum - 1.0))));
            img.at<cv::Vec<uchar, 4>>(i, j) = cv::Scalar(pixel, pixel, pixel, 255);
        }
    }
    imwrite(savePath, img);    //保存生成的图片
    return img;
}

比如绘制一个16色灰阶图

MakeColorMap(1280, 720, 2, (char *) "/work/colormap.bmp");

效果如下:
在这里插入图片描述
测一下显示器的质量吧,啧啧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值