c# 识别图片的颜色值即RGB值
//用于检索颜色相似的算法所声明的变量
int i, j;
string c11, c22;
int r = 16000, n1, m11, m1, n2, m22, m2;
Color c1 = new Color();
Color c2 = new Color();
public double ColorValue(Image p,Image pS1)//通过与标准图像颜色分布进行对比,并返回颜色分布相似值
{
//变量声明以及初始化
double[,] s1 = new double[20000, 2];
double[,] s2 = new double[20000, 2];
double seaBlue=0;//海蓝色像素点数
double percent;//海蓝色占图像比率
double u = 0, d;
string D = " ";
u = 0;
n1 = 0;
m11 = 0;
m1 = 0;
n2 = 0;
m22 = 0;
m2 = 0;
Form1 f=new Form1();
//计算打开的图片像素分布
if (p != null)
{
Bitmap p1 = new Bitmap(p);
for (i = 0; i < p1.Width - 1; i++)
{
for (j = 0; j < p1.Height - 1; j++)
{
c1 = p1.GetPixel(i, j); //获得图像每点的颜色基本属性
if (c1.R >= 0 && c1.R <= 100 && c1.G >= 100 && c1.G <= 255 && c1.B >= 150 && c1.B <= 255)//判断颜色是否为海蓝色区域
seaBlue++;
n1 = n1 + 1; //统计像素数
c11 = c1.Name; //返回RGB 值
m1 = Convert.ToInt32(Math.Pow(256, 3) / r); //每组颜色值的范围,这里设置组数为16000,可以扩大组数以提高精度,但会降低识别速度。
string str = c11;
//将十六进制装换成十进制
int val = (-1) * Int32.Parse(str, System.Globalization.NumberStyles.HexNumber);
m11 = Convert.ToInt32(Math.Floor(Convert.ToDouble(val / m1))); //提取颜色归属于哪一组
s1[m11, 0]++; //统计每组颜色的像素数
}
}
//用于对比的标准图片
Bitmap p2 = new Bitmap(pS1);
for (i = 0; i < p2.Width - 1; i++)
{
for (j = 0; j < p2.Height - 1; j++)
{
c2 = p2.GetPixel(i, j); //获得图像每点的颜色基本属性
n2 = n2 + 1; //统计像素数
c22 = c2.Name; //返回RGB 值
m2 = Convert.ToInt32(Math.Pow(256, 3) / r); //每组颜色值的范围
string str = c22;
//将十六进制装换成十进制
int val = (-1) * Int32.Parse(str, System.Globalization.NumberStyles.HexNumber);
m22 = Convert.ToInt32(Math.Floor(Convert.ToDouble(val / m2))); //提取颜色归属于哪一组
s2[m22, 0]++; //统计每组颜色的像素数
}
}
for (i = 0; i < 16000; i++)
{
u += (Convert.ToDouble((s1[i, 0] - s2[i, 0]) / n1)) * (Convert.ToDouble((s1[i, 0] - s2[i, 0]) / n1));
}
percent = seaBlue / n1;
if (percent > 0.03)//海蓝色比率大于0.03再进行d值的判断,否则直接跳过d值的计算
{
d = Math.Pow(u, 0.5);
D = String.Format("{0:F6}", d);
return d;
}
else
return d = 1;
}
else
return d=1;
}
c# 识别图片的颜色值即RGB值相关推荐
- python 提取出图片特定区域的平均rgb值
首先原图如下:需要提取出十字架顶端的四个圆区域带颜色的平均rgb值,如果是白色的就不参与计算 import cv2 import numpy as np import imagesize from P ...
- 【VB6|第17期】16进制颜色值与RGB值互相转换(含源码)
日期:2023年3月28日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海-- 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长:如果有不对的地方,还望各位 ...
- 使用window自带的“画图”软件查看图片某点的RGB值
第一步:用"截图工具"截取图片并保存到本地,假设命名为"捕获.JPG" 第二步:用"画图"工具打开图像 第三步:点击颜色选取器 第四步:在图 ...
- stm32单片机通过串口通信实现将GY_33颜色传感器的接收到的颜色和RGB值上传给上位机
目录 硬件连接 实现串口1和串口3相互通信 GY_33的概述 对GY_33的数据分析 GY_33数据处理 GY_33的配套软件使用 代码 主要思路:注:这里我使用串口1和串口3,可以更改串口 ...
- html颜色的16进制rgb数码,JavaScript实现16进制颜色值转RGB的方法
本文实例讲述了JavaScript实现16进制颜色值转RGB的方法.分享给大家供大家参考.具体实现方法如下: 16进制颜色值转RGB *{margin:0;padding:0;font-family: ...
- Java获取图片RGB值
前言 图片对比获取坐标的方法很多,我选择了比较简单的方法:对比rgb值.要想对比rgb值,就得先获取图片的rgb值.运用的是BufferedImage里的getRGNB方法. 解决方案 首先用.get ...
- 快速识别图像的RGB值
今天无意发现,使用QQ的文字识别功能也可以识别色彩颜色 ctrl + alt + o 移动鼠标指针至想要提取颜色的位置 按c键就可以复制色号了 代码里一粘贴直接就是RGB值
- java 图片 rgb_简单的java图片处理——如何用Java读出一张图片的RGB值?
如何用Java读出一张图片的RGB值? (牛人可以从第六步开始看,牛人看了代码就知道怎么建文件夹啦!! ) (1) 在刚刚建立项目的根目录新建一个文件夹date,例如,我的这个项目的根目录是:E:\W ...
- 【随手记】PHP获取png图片主色系各色系色块RGB值
言简意赅 : 整体思路通过PHP GD库获取图片的宽高,根据宽高进行自定义(10)像素点的切分,取切分部分的色块RGB值,记录颜色出现的次数,判断图片的主色系 以及各色系 可以自行改进后 屏蔽模糊多余 ...
最新文章
- 【算法】【ACM】深入理解Dijkstra算法(单源最短路径算法)
- opencv 图片叠加_OpenCVSharp学习之——ROI与图像叠加
- 14.VisualVM使用详解、15.VisualVM堆查看器使用的内存不足、19.class文件--文件结构--魔数、20.文件结构--常量池、21.文件结构访问标志(2个字节)、22.类加载机制概
- 【数据结构与算法】之深入解析“交错字符串”的求解思路与算法示例
- outlook的插件管理(Web界面)
- JAVA面试常考系列十一
- 14 [虚拟化] 虚存抽象;Linux进程的地址空间
- java需求设计_JavaWeb期末设计---需求分析文档. stage1
- go语言的安装、环境变量配置及简单使用
- daily scrum 12.2
- ElasticSearch 2 (18) - 深入搜索系列之控制相关度
- 《数字图像处理 第三版》(冈萨雷斯)——第三章 灰度变换和空间滤波
- Faster R-CNN算法详细流程
- CLM5.0模式移植篇——驴某人的自我救赎
- 个人学习python
- java http 传输二进制流_字符流、字节流、二进制及其在HTTP协议传输
- Swing批量重命名并导出excel
- idea中Rebuild是什么意思
- P4720 【模板】扩展卢卡斯
- 第五天 01-ftp服务器使用及arp欺骗获取ftp账号密码