C#操作像素替换图片中的指定颜色

  待处理的图片,其特征是包含有限数量颜色,不同的颜色相互交叉使用,相同颜色并未完全连贯,需要将图片中的指定颜色替换为另一颜色。虽然很多图片处理工具都支持类似操作,最后还是自己动手编写简单的处理程序。
  程序的功能主要包括:1)一对一颜色替换,仅替换颜色RGB值等于指定颜色的像素;2)范围替换,替换颜色RGB值与指定颜色相距不超过指定距离的像素。
  获取图片像素和设置图片像素使用的是Bitmap类的GetPixel和SetPixel函数,计算像素与像素的距离使用的是三维坐标距离计算公式,如下图所示(参考文献1)。

在这里插入图片描述
  关键代码如下所示:

Bitmap curImage = picSrcImage.Image as Bitmap;
Color curColor;//源颜色,待替换颜色
Color colorSource = Color.FromArgb(Convert.ToByte(nudR.Value), Convert.ToByte(nudG.Value), Convert.ToByte(nudB.Value));
//目标颜色
Color colorDest = Color.FromArgb(Convert.ToByte(nudDR.Value), Convert.ToByte(nudDG.Value), Convert.ToByte(nudDB.Value));//一对一替换像素
for (int i = 0; i < curImage.Width; i++)
{for (int j = 0; j < curImage.Height; j++){curColor = curImage.GetPixel(i, j);if ((curColor.R == Convert.ToByte(nudR.Value)) &&(curColor.G == Convert.ToByte(nudG.Value)) &&(curColor.B == Convert.ToByte(nudB.Value))){curImage.SetPixel(i, j, colorDest);}}
}//范围替换像素
for (int i = 0; i < curImage.Width; i++)
{for (int j = 0; j < curImage.Height; j++){curColor = curImage.GetPixel(i, j);if (CalculateDistance(curColor, colorSource) <= Convert.ToDouble(nudRange.Value)){curImage.SetPixel(i, j, colorDest);}}
}

  最后是程序运行效果,导入原始图片后,将右上角的BALL字符内部的红色替换为蓝色,如下图所示。
在这里插入图片描述
在这里插入图片描述
参考文献:
[1]https://zhidao.baidu.com/question/1312602947632691539.html

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

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

相关文章

4种小众的能力,帮你更好地适应未来

新年伊始&#xff0c;又是一个全新的开始。 未来的社会究竟需要什么样的能力&#xff1f;这已经是一个很老的话题&#xff0c;已经有许许多多讨论了。但这其中&#xff0c;可能有一些是容易被人忽略的&#xff0c;或者不容易被注意到的。 我想跟你一起分享&#xff0c;我对这个…

Live800:企业如何与客户建立长期、稳定关系,实现双赢

在当今的商业环境中&#xff0c;企业不仅需要吸引新客户&#xff0c;更需要与现有客户建立长期、稳定的关系。这样的关系可以带来持续的收入&#xff0c;提高企业的利润性。然而&#xff0c;如何建立和维护这样的关系呢&#xff1f;文章将从三个方面进行深入探讨&#xff1a;提…

Milvus向量数据库检索

官方文档&#xff1a;https://milvus.io/docs/search.md   本节介绍如何使用 Milvus 搜索实体。   Milvus 中的向量相似度搜索会计算查询向量与具有指定相似度度量的集合中的向量之间的距离&#xff0c;并返回最相似的结果。您可以通过指定过滤标量字段或主键字段的布尔表达…

Javaweb-MyBatis

一、概念 MyBatis是一款优秀的持久层框架&#xff0c;用于简化JDBC开发 MyBatis本是Apache的一个开源项目iBatis&#xff0c;2010年这个项目由apache software found迁移到了google code&#xff0c;并且改名为MyBatis。2013年11月迁移到Github 持久层 负责将数据到保存到数…

科技云报道:两会热议的数据要素,如何拥抱新技术?

科技云报道原创。 今年全国两会上&#xff0c;“数字经济”再次成为的热点话题。 2024年政府工作报告提到&#xff1a;要健全数据基础制度&#xff0c;大力推动数据开发开放和流通使用&#xff1b;适度超前建设数字基础设施&#xff0c;加快形成全国一体化算力体系&#xff1…

面试经典-11-接雨水

题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,2,…

2024自动化测试的痛点与发展趋势!

前几天在技术交流群里&#xff0c;大家讨论了很多关于自动化测试落地面临的痛点和如何创造价值的话题&#xff0c;颇有感触。 自动化测试这个话题&#xff0c;从出现到在国内大规模开展实践&#xff0c;有很长的一段时间了。早期&#xff0c;大家对自动化测试的理解和使用目的…

java:学生管理系统

一、介绍 该功能是实现学生信息的添加&#xff0c;查看&#xff0c;修改&#xff0c;删除以及退出系统的简单操作。 二、代码实现 public class Student {private String sid;//学号private String name;//姓名private String age;//年龄private String address;//地址publi…

通过NFS 实现windows共享linux目录

一、配置WIndows 1.进入程序和功能 2.勾选NFS服务&#xff0c;安装客户端 二、安装NFS Service 在ubuntu 1.查看apt源是否存在nfs服务端安装包 sudo apt-cache madison nfs-kernel-server 2. 安装nfs-kernel-server sudo apt install nfs-kernel-server 3.建立共享目录&…

Compose UI 之 BottomAppBar 底部应用栏

BottomAppBar 底部应用栏 BottomAppBar 是一个在 Jetpack Compose 中用于创建底部应用栏的组件。它提供了一个高度可定制且功能丰富的底部导航解决方案。 它的使用方式与 TopAppBar 类似。下面的图是 BottomAppBar 的基本样式图。 常见使用场景 BottomAppBar 在应用中常用于…

人工智能课题、模型源码

人工智能研究生毕业&#xff5e;深度学习、计算机视觉、时间序列预测&#xff08;LSTM、GRU、informer系列&#xff09;、python、人工智能项目代做和指导&#xff0c;各种opencv图像处理、图像分类模型&#xff08;vgg、resnet、mobilenet、efficientnet等&#xff09;、人脸检…

ESD静电测试闸机-筑成电子厂防静电管理的第一道防线

ESD静电测试闸机是一种用于防止静电对电子产品和设备造成损害的重要设备。在电子厂等对静电敏感的场所&#xff0c;ESD静电测试闸机扮演着防静电管理的第一道防线的角色&#xff0c;确保生产环境的安全和产品质量的稳定。本文将从静电监测和消除、刷卡/身份证认证、指纹/人脸识…

Tengine编译安装

首先下载源码 可以去官网&#xff1a;The Tengine Web Server 当前最新版地址&#xff1a;https://tengine.taobao.org/download/tengine-3.1.0.tar.gz 安装编译依赖 yum -y install gcc pcre-devel zlib-devel openssl-devel libxml2-devel \libxslt-devel gd-devel GeoIP…

一款前端开发工具Hbuilder

背景&#xff1a;最近日在接触前同事留下的一个VUE项目&#xff08;只有前端代码&#xff0c;后台服务压根没写真不知道以前是怎么糊弄过去的&#xff09;时&#xff0c;发现一款可以快速开发前端的软件&#xff1b;今日分享一下。 当我打开项目时发现&#xff0c;有个app.vue…

【Cookie和Session辨析】

1.cookie 1.1什么是cookie Cookie 是一种在客户端&#xff08;通常是 Web 浏览器&#xff09;和服务器之间传递信息的机制&#xff0c;用于在客户端存储少量的数据。它由服务器发送到客户端浏览器&#xff0c;然后浏览器会将这些数据存储在本地&#xff0c;并在后续的请求中将…

解决安装PyMuPDF(也被称为fitz库)的问题(可成功安装且使用)

解决安装PyMuPDF&#xff08;也被称为fitz库&#xff09;的问题&#xff08;可成功安装且使用&#xff09; 安装方法&#xff1a;一些安装时报错的原因解析&#xff1a;报错1&#xff1a;报错2&#xff1a;报错3-无效的分发包警告&#xff1a;报错4&#xff1a; 使用实例 在使用…

电子学会 2023.03 Python 3级(yanpuxin)

十进制数111转换成二进制数是&#xff1f; 1、十进制数111转换成二进制数是&#xff1f;&#xff08; &#xff09; A 111 B 1111011 C 101111 D 1101111 正确答案:D 试题解析: 十进制转二进制&#xff0c;采用除二倒取余数&#xff0c;直到商为0为止。 2、某班有36人…

YOLO v8:目标检测的最新王者

本文来自公众号“AI大道理” —————— Yolov8是Yolo系列模型的最新王者&#xff0c;各种指标全面超越现有目标检测模型。 Yolov8借鉴了Yolov5、Yolov6、YoloX等模型的设计优点&#xff0c;全面改进了Yolov5模型结构&#xff0c;同时保持了Yolov5工程化简洁易用的优势。 …

hex文件格式解析

本文框架 1. hex文件格式1.1 数据长度1.2 地址域1.3 数据类型1.4 数据域1.5 CRC校验域 本文对hex文件格式进行解析&#xff0c;介绍各部分组成及其含义&#xff0c;在此mark下&#xff0c;方便后续开发脚本对hex文件进行操作。 1. hex文件格式 Intel HEX文件是由一行行符合Int…

Vue3调用钉钉api,内嵌H5微应用单点登录对接

钉钉内嵌H5微应用单点登录对接 https://open.dingtalk.com/document/isvapp/obtain-the-userid-of-a-user-by-using-the-log-free 前端需要的代码 1、安装 dingtalk-jsapi npm install dingtalk-jsapi2、在所需页面引入 import * as dd from dingtalk-jsapi; // 引入钉钉a…