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

相关推荐
谢娘蓝桥18 分钟前
[Xmos] Xmos架构
开发语言·架构·xmos
SKYDROID云卓小助手18 分钟前
无人设备遥控器之无线电频率篇
服务器·网络·单片机·嵌入式硬件·算法
十八岁讨厌编程23 分钟前
【算法训练营Day11】二叉树part1
算法
yi.Ist24 分钟前
数据结构 —— 栈(stack)在算法思维中的巧妙运用
开发语言·数据结构
[纳川]35 分钟前
把word中表格转成excle文件
开发语言·c#·word
s153351 小时前
C++STL-deque
开发语言·c++
Devil枫1 小时前
Kotlin项目实战与总结
开发语言·jvm·kotlin
緈福的街口1 小时前
【leetcode】2236. 判断根节点是否等于子节点之和
算法·leetcode·职场和发展
yeziyfx1 小时前
kotlin中集合的用法
android·开发语言·kotlin
祁思妙想1 小时前
【LeetCode100】--- 1.两数之和【复习回滚】
数据结构·算法·leetcode