.NET Core 图像处理(图像二值化,图像灰度化,图像灰度反转)

2024-08-28 02:18

本文主要是介绍.NET Core 图像处理(图像二值化,图像灰度化,图像灰度反转),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ImageSharp 是支持.NET Core跨平台图形处理库,本文将利用ImageSharp库实现图像二值化,图像灰度化,图像灰度反转。

  • 图像二值化
public static Image<Rgba32> Binaryzation(Image<Rgba32> image)
{int avg = 0;for (int i = 0; i < image.Width; i++){for (int j = 0; j < image.Height; j++){var color = image.GetPixelReference(i, j);avg += color.B;}}avg = (int)avg / (image.Width * image.Height);for (int i = 0; i < image.Width; i++){for (int j = 0; j < image.Height; j++){//获取该像素点的RGB的颜色var color = image.GetPixelReference(i, j);int value = 255 - color.B;//计算颜色,大于平均值为黑,小于平均值为黑Color newColor = value > avg ? Color.FromArgb(0, 0, 0) : Color.FromArgb(255,255,255);//修改该像素点的RGB的颜色image.GetPixelReference(i, j).Rgba =(uint)newColor.ToArgb();}}return image;
}
  • 图像灰度化
public static Image<Rgba32> GrayProcessing(Image<Rgba32> image)
{for (int i = 0; i < image.Width; i++){for (int j = 0; j < image.Height; j++){//获取该像素点的RGB的颜色var color = image.GetPixelReference(i, j);//计算灰度值int gray = (int)(color.R * 0.3 + color.G * 0.59 + color.B * 0.11);Color newColor = Color.FromArgb(gray, gray, gray);//修改该像素点的RGB的颜色image.GetPixelReference(i, j).Rgba = (uint)newColor.ToArgb();}}return image;
}
  • 图像灰度反转
 public static Image<Rgba32> GrayReversal(Image<Rgba32> image){for (int i = 0; i < image.Width; i++){for (int j = 0; j < image.Height; j++){//获取该像素点的RGB的颜色var color = image.GetPixelReference(i, j);//取相反色Color newColor = Color.FromArgb(255-color.R,255-color.G,255-color.B);//修改该像素点的RGB的颜色image.GetPixelReference(i, j).Rgba = (uint)newColor.ToArgb();}}return image;}

这篇关于.NET Core 图像处理(图像二值化,图像灰度化,图像灰度反转)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1113443

相关文章

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

Nginx实现前端灰度发布

《Nginx实现前端灰度发布》灰度发布是一种重要的策略,它允许我们在不影响所有用户的情况下,逐步推出新功能或更新,通过灰度发布,我们可以测试新版本的稳定性和性能,下面就来介绍一下前端灰度发布的使用,感... 目录前言一、基于权重的流量分配二、基于 Cookie 的分流三、基于请求头的分流四、基于请求参数的分

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是

Springboot控制反转与Bean对象的方法

《Springboot控制反转与Bean对象的方法》文章介绍了SpringBoot中的控制反转(IoC)概念,描述了IoC容器如何管理Bean的生命周期和依赖关系,它详细讲解了Bean的注册过程,包括... 目录1 控制反转1.1 什么是控制反转1.2 SpringBoot中的控制反转2 Ioc容器对Bea

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

Spring IOC控制反转的实现解析

《SpringIOC控制反转的实现解析》:本文主要介绍SpringIOC控制反转的实现,IOC是Spring的核心思想之一,它通过将对象的创建、依赖注入和生命周期管理交给容器来实现解耦,使开发者... 目录1. IOC的基本概念1.1 什么是IOC1.2 IOC与DI的关系2. IOC的设计目标3. IOC

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将