灰度图像转化为黑白图像、转化图像为一位位深度的图像(仅保留黑色)

/// <summary>
/// 灰度图像处理
/// </summary>
public class PicGray
{/// <summary>/// 获取pic图像对应的黑白图像/// </summary>/// <param name="pic"></param>/// <param name="NumGray">像素灰度值</param>/// <returns></returns>public static Bitmap ToBlack(Bitmap pic, int NumGray = 220){// 灰度图像转化为黑白图像if (isGrayPic(pic)){Color Black = Color.FromArgb(255, 0, 0, 1);Color White = Color.FromArgb(255, 255, 255, 254);Bitmap tmp = new Bitmap(pic.Width, pic.Height);for (int h = 0; h < pic.Height; h++){for (int w = 0; w < pic.Width; w++){Color C = pic.GetPixel(w, h);Color D = (C.R < NumGray && C.G < NumGray && C.B < NumGray) ? Black : White;tmp.SetPixel(w, h, D);}}return tmp;}else return pic;}/// <summary>/// 判断图像是否为灰度图像/// </summary>/// <param name="pic"></param>/// <returns></returns>public static bool isGrayPic(Bitmap pic){int stepH = pic.Height / 100;int stepW = pic.Width / 100;if (stepH < 1) stepH = 1;if (stepW < 1) stepW = 1;for (int h = 0; h < pic.Height; h = h + stepH){for (int w = 0; w < pic.Width; w = w + stepW){Color C = pic.GetPixel(w, h);if (C.R != C.G || C.G != C.B) return false;}}return true;}/// <summary>/// 转化为一位位深度的图像(仅保留黑色)/// </summary>/// <param name="pic"></param>/// <returns></returns>private Bitmap To1Bit(Bitmap pic){var newbitmap = pic.Clone(new Rectangle(0, 0, pic.Width, pic.Height), PixelFormat.Format1bppIndexed);return newbitmap;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/710880.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

webpack5基础--02_基本配置( 5 大核心概念)

基本配置 在开始使用 Webpack 之前&#xff0c;我们需要对 Webpack 的配置有一定的认识。 5 大核心概念 entry&#xff08;入口&#xff09; 指示 Webpack 从哪个文件开始打包 output&#xff08;输出&#xff09; 指示 Webpack 打包完的文件输出到哪里去&#xff0c;如何…

Vue项目构建时遇到的问题

Vue项目构建时遇到的问题与上线相关问题 项目构建遇到的问题构建指令关于JavaScript文件无法识别的问题关于element-plus组件库中的模块显示找不到的问题关于路由懒加载时组件路径报错问题关于项目静态资源基准路径的设置关于路由模式的问题 关于nginx服务器的使用 项目构建遇到…

事物管理(黑马学习笔记)

事物回顾 在数据库阶段我们已学习过事务了&#xff0c;我们讲到&#xff1a; 事物是一组操作的集合&#xff0c;它是一个不可分割的工作单位。事务会把所有的操作作为一个整体&#xff0c;一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功&#xff0c;要么同时…

java实现根据 表索引 批量新增或更新数据信息

目的 通过数据库名、表名实现动态添加活更新数据。添加或更新由唯一索引判断。 实现 思路 查询数据库表的唯一索引-CSDN博客 根据数据库表名动态查询表字段-CSDN博客 达梦数据库根据唯一索引批量新增或更新数据-CSDN博客 将数据转换为sql语句需要的格式 完善代码&#xff0c;实…

maven常用打包命令

1.背景 2.代码 1 mvn常用命令 一般情况下对于一个maven项目&#xff0c;cd切换到当前项目路径下&#xff0c;执行如下示例命令即可对项目进行打包。 mvn clean install mvn -U clean package -Dmaven.test.skiptrue mvn clean package -Dmaven.test.skiptrue -P prod mvn cle…

JavaScript数组操作指南:20个精通操作技巧指南

splice、 slice、 pop 和 shift。数组的排序方法是稳定且非原地算法的吗&#xff1f;要记住所有 JavaScript 数组方法以及它们之间的区别并不容易。它们的名称相似&#xff0c;就好像直接从同义词词典中提取一样。 这个数组速查表列出了 JavaScript 中通常需要的所有数组方法&…

Gson使用Object接收长数字问题

近期发现公司同事在使用Gson对数字进行反序列列化时出现丢失精度的问题&#xff0c;在这里搬运一下&#xff0c;做个记录~ 现象 使用Gson反序列化长Long数字(大于16位),如果用Object类型来接收则会丢失精度。 Gson会将数字反序列化为double类型,double类型本身就容易丢精度。…

小程序基础

小程序基础 1. 认识什么是小程序 什么是微信小程序 微信小程序是一种运行在微信内部的 轻量级 应用程序。 在使用小程序时 不需要下载安装&#xff0c;用户 扫一扫 或 搜一下 即可打开应用。它也体现了 “用完即走” 的理念&#xff0c;用户不用关心安装太多应用的问题。它…

weak的实现原理

iOS 在运行时维护着一个全局的弱引用表&#xff0c;该表是一个 hash 表&#xff0c;hash表的 key 是 对象本身&#xff0c;value 是指向该对象的所有 weak 指针的地址数组。 /**全局的弱引用表&#xff0c;本质是一个hash结构&#xff0c;对象本身作为key, 存储weak修饰的指…

大模型训练经验

1.模型训练好后预测全是起始符号。 解决办法&#xff1a;训练数据的输入输出去掉起始符号。 2.模型训练后学不到有效信息。 加大epoch&#xff0c;我加大到了1000。 3.模型训练后预测没有结束符&#xff0c;暂时未解&#xff0c;另外&#xff0c;发现当训练不足时&#xff…

Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。

通过本篇文章&#xff0c;我们将会学习以下内容&#xff1a; 1、在Windows上安装Metasploit 2、在Linux和MacOS上安装Metasploit 3、在Kali Linux中使用 Metasploit 4、升级Kali Linux 5、使用虚拟化软件构建渗透测试实验环境 6、配置SSH连接 7、使用SSH连接Kali 8、配…

如何学习自然语言处理之语言模型

自然语言处理&#xff08;NLP&#xff09;是一种人工智能技术&#xff0c;它使计算机能够理解和处理人类语言。而语言模型是NLP中的一个重要概念&#xff0c;主要是用来估测一些词的序列的概率&#xff0c;即预测p(w1, w2, w3 … wn)&#xff0c;其中一个应用就是句子的生成。 …

JVM运行流程

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;JavaEE &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; JVM 1. 运行流程2. 运行时数据区2.1 堆&am…

ubuntu新建ap热点并分享

测试环境ubuntu16,只有一台笔记本电脑&#xff0c;不插网线&#xff0c;无线网卡既连wifi&#xff0c;又作为热点 1.方法1 直接手动新建ap热点 参考https://jingyan.baidu.com/article/ea24bc39b03fc6da62b331f0.html https://jingyan.baidu.com/article/363872ecd8f35d6e4ba…

机试指南:Ch5:线性数据结构 Ch6:递归与分治

文章目录 第5章 线性数据结构1.向量 vector2.队列 queue(1)队列的特点、应用(2)基本操作(3)例题例题1&#xff1a;约瑟夫问题2 &#xff08;难度&#xff1a;中等&#xff09; (4)习题习题1&#xff1a;排队打饭 &#xff08;难度&#xff1a;中等&#xff09; 3.栈 stack(1)栈…

前端 JS 经典:Content-type 详解

1. 什么是 Content-Type Content-Type 是 HTTP 协议中的一个请求头或响应头字段&#xff0c;用于指示发送或接收的实体的媒体类型&#xff0c;告诉服务器或客户端如何解析和处理请求或响应的主体部分。 2. Content-Type 的构成 Content-Type 由两部分组成&#xff1a;媒体类型…

视频在线压缩

video2edit 一款免费的在线视频编辑软件&#xff0c;可以进行视频合并、视频剪辑、视频压缩以及转换视频格式等。 链接地址&#xff1a;在线视频编辑器和转换器 - 编辑&#xff0c;转换和压缩视频文件 打开视频压缩页面&#xff0c;上传想要压缩视频&#xff0c;支持MP4&…

收入稳步增长 助力持续发展 尼康发布截至2024年3月财年第三季度财报

近日&#xff0c;尼康截至2024年3月财年的第三季度&#xff08;2023年10月1日-2023年12月31日&#xff09;财报正式发布。数据显示&#xff0c;尼康集团第三财季销售收入共计1977亿日元&#xff0c;较去年同期上涨300亿日元&#xff0c;涨幅约17.9%。其中影像业务领域&#xff…

Java面试题:解释Java内存模型中的内存顺序规则,Java中的线程组(ThreadGroup)的工作原理,Java中的FutureTask的工作原理

引言 在Java开发领域&#xff0c;内存模型、多线程和并发是三个至关重要的概念&#xff0c;它们直接影响到程序的性能、稳定性和可扩展性。作为面试官&#xff0c;考察候选人对这些概念的理解和应用能力是评估其技术水平的重要手段。本文将提供三道涉及这些核心知识点的面试题…

视频记录仪_基于联发科MT6762的智能4G记录仪方案

智能记录仪采用联发科强劲八核处理器&#xff0c;12nm制程工艺的记录仪具便是满足这些需求的理想选择。搭载4GB32GB内存&#xff0c;并运行Android 11.0操作系统&#xff0c;这款记录仪具展现出强劲的性能表现。 首先&#xff0c;这款记录仪具具备优秀的视频录制功能。它能完整…