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

相关推荐
张志翔的博客10 分钟前
RK3588 openssl-3.4.1 编译安装
开发语言·后端·scala
m0_5557629021 分钟前
qt style-sheet样式不起作用问答
开发语言·qt
啊吧怪不啊吧25 分钟前
C++相关基础概念之入门讲解(上)
c语言·开发语言·c++
破刺不会编程25 分钟前
Linux中的权限
linux·运维·服务器·开发语言
最好的药物是乌梅28 分钟前
【蓝桥杯速成】| 3.数据结构
数据结构·算法·蓝桥杯
灏瀚星空28 分钟前
Python JSON模块详解:从入门到高级应用
开发语言·经验分享·笔记·python·json
azaz_plus32 分钟前
C++ priority_queue 堆
开发语言·c++·stl··priority_queue
*.✧屠苏隐遥(ノ◕ヮ◕)ノ*.✧32 分钟前
C语言_数据结构总结10:二叉树的递归/非递归遍历
c语言·数据结构·b树·算法·链表·visualstudio·visual studio
上官美丽32 分钟前
单一责任原则在Java设计模式中的深度解析
java·开发语言·设计模式
uhakadotcom33 分钟前
MCP协议详解:让AI更懂你的数据
算法·面试·github