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位图的最小值

相关推荐
hh随便起个名3 小时前
力扣二叉树的三种遍历
javascript·数据结构·算法·leetcode
小浣熊熊熊熊熊熊熊丶3 小时前
《Effective Java》第25条:限制源文件为单个顶级类
java·开发语言·effective java
啃火龙果的兔子3 小时前
JDK 安装配置
java·开发语言
星哥说事3 小时前
应用程序监控:Java 与 Web 应用的实践
java·开发语言
等....4 小时前
Miniconda使用
开发语言·python
zfj3214 小时前
go为什么设计成源码依赖,而不是二进制依赖
开发语言·后端·golang
醇氧4 小时前
org.jetbrains.annotations的@Nullable 学习
java·开发语言·学习·intellij-idea
Java&Develop4 小时前
Aes加密 GCM java
java·开发语言·python
weixin_462446234 小时前
使用 Go 实现 SSE 流式推送 + 打字机效果(模拟 Coze Chat)
开发语言·后端·golang
Dingdangcat864 小时前
城市交通多目标检测系统:YOLO11-MAN-FasterCGLU算法优化与实战应用_3
算法·目标检测·目标跟踪