c# OpenCvSharp 16位转8位图

通过OpenCvSharp,将16位图转8位图,代码如:

cs 复制代码
        public static Mat Convert16BitTo8Bit(Mat src16, double max, double min)
        {
            if (src16.Depth() == 0)
            {
                //已经是8位了
                return src16;
            }

            Mat dst8 = Mat.Zeros(src16.Rows, src16.Cols, MatType.CV_8UC1);
            if (max <= min)
            {
                if (min == 255)
                {
                    max = 255;
                    min = 254;
                }
                else
                {
                    max = min + 1;
                }
            }
            double delt = 255.0 / (max - min);
            for (int i = 0; i < src16.Rows; i++)
            {
                for (int j = 0; j < src16.Cols; j++)
                {
                    ushort s = src16.At<ushort>(i, j);
                    if (s < min)
                    {
                        dst8.At<byte>(i, j) = 0;
                    }
                    else
                    {
                        byte d = (byte)((s - min) * delt);
                        dst8.At<byte>(i, j) = d;
                    }

                }
            }

            return dst8;
        }

参数说明:

Mat src16,16位图

double max,16位图的最大值

double min,16位图的最小值

相关推荐
步、步、为营9 分钟前
Hangfire.NET:.NET任务调度
c#·.net
望云山19025 分钟前
4.3 线性回归的改进-岭回归/4.4分类算法-逻辑回归与二分类/ 4.5 模型保存和加载
算法·回归·线性回归
White の algo27 分钟前
C语言常见概念
c语言·开发语言·算法
阿猿收手吧!29 分钟前
【C语言】C语言经典面试题详解
linux·c语言·开发语言·算法
m0_7482361133 分钟前
2024 Rust现代实用教程:1.1Rust简介与安装更新
开发语言·数据库·rust
SomeB1oody40 分钟前
【Rust自学】20.4. 结语:Rust学习一阶段完成+附录
开发语言·后端·学习·rust
五行星辰42 分钟前
Java 读取 Word 模板文档并替换内容生成新文档
java·开发语言·word
旺代1 小时前
Qt实现简易视频播放器
开发语言·qt
獨枭1 小时前
如何在 Qt 中添加和使用系统托盘图标
开发语言·数据库·qt
瀛洲客1 小时前
Qt 支持的动画格式对比,Lottie/APNG/GIF/WEBP
开发语言·qt·lottie动画·apng动画·gif+ webp