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

相关推荐
CodeCraft Studio16 分钟前
国产化Word处理控件Spire.Doc教程:通过C# 删除 Word 文档中的超链接
开发语言·c#·word
martian66528 分钟前
麒麟系统下Tomcat部署Java Web程序(WAR包)及全链路问题排查指南
开发语言·tomcat·系统安全
ai.Neo29 分钟前
牛客网NC22012:判断闰年问题详解
开发语言·c++·算法
好吃的肘子35 分钟前
ElasticSearch进阶
大数据·开发语言·分布式·算法·elasticsearch·kafka·jenkins
NaclarbCSDN41 分钟前
Java集合框架
java·开发语言·前端
xiaohanbao091 小时前
day26 Python 自定义函数
开发语言·python·学习·机器学习·信息可视化·numpy
jie188945758661 小时前
c++,windows,多线程编程详细介绍
开发语言·c++
破晓的历程1 小时前
Qt file文件操作详解
开发语言·qt
CIb0la1 小时前
数据可视化
程序人生·算法·信息可视化
袁气满满~_~1 小时前
LeetCode:617、合并二叉树
算法·leetcode·二叉树