//用于检索颜色相似的算法所声明的变量
        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值相关推荐

  1. python 提取出图片特定区域的平均rgb值

    首先原图如下:需要提取出十字架顶端的四个圆区域带颜色的平均rgb值,如果是白色的就不参与计算 import cv2 import numpy as np import imagesize from P ...

  2. 【VB6|第17期】16进制颜色值与RGB值互相转换(含源码)

    日期:2023年3月28日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海-- 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长:如果有不对的地方,还望各位 ...

  3. 使用window自带的“画图”软件查看图片某点的RGB值

    第一步:用"截图工具"截取图片并保存到本地,假设命名为"捕获.JPG" 第二步:用"画图"工具打开图像 第三步:点击颜色选取器 第四步:在图 ...

  4. stm32单片机通过串口通信实现将GY_33颜色传感器的接收到的颜色和RGB值上传给上位机

    目录 硬件连接 实现串口1和串口3相互通信 GY_33的概述 对GY_33的数据分析 GY_33数据处理 GY_33的配套软件使用 代码 主要思路:注:这里我使用串口1和串口3,可以更改串口     ...

  5. html颜色的16进制rgb数码,JavaScript实现16进制颜色值转RGB的方法

    本文实例讲述了JavaScript实现16进制颜色值转RGB的方法.分享给大家供大家参考.具体实现方法如下: 16进制颜色值转RGB *{margin:0;padding:0;font-family: ...

  6. Java获取图片RGB值

    前言 图片对比获取坐标的方法很多,我选择了比较简单的方法:对比rgb值.要想对比rgb值,就得先获取图片的rgb值.运用的是BufferedImage里的getRGNB方法. 解决方案 首先用.get ...

  7. 快速识别图像的RGB值

    今天无意发现,使用QQ的文字识别功能也可以识别色彩颜色 ctrl + alt + o 移动鼠标指针至想要提取颜色的位置 按c键就可以复制色号了 代码里一粘贴直接就是RGB值

  8. java 图片 rgb_简单的java图片处理——如何用Java读出一张图片的RGB值?

    如何用Java读出一张图片的RGB值? (牛人可以从第六步开始看,牛人看了代码就知道怎么建文件夹啦!! ) (1) 在刚刚建立项目的根目录新建一个文件夹date,例如,我的这个项目的根目录是:E:\W ...

  9. 【随手记】PHP获取png图片主色系各色系色块RGB值

    言简意赅 : 整体思路通过PHP GD库获取图片的宽高,根据宽高进行自定义(10)像素点的切分,取切分部分的色块RGB值,记录颜色出现的次数,判断图片的主色系 以及各色系 可以自行改进后 屏蔽模糊多余 ...

最新文章

  1. 【算法】【ACM】深入理解Dijkstra算法(单源最短路径算法)
  2. opencv 图片叠加_OpenCVSharp学习之——ROI与图像叠加
  3. 14.VisualVM使用详解、15.VisualVM堆查看器使用的内存不足、19.class文件--文件结构--魔数、20.文件结构--常量池、21.文件结构访问标志(2个字节)、22.类加载机制概
  4. 【数据结构与算法】之深入解析“交错字符串”的求解思路与算法示例
  5. outlook的插件管理(Web界面)
  6. JAVA面试常考系列十一
  7. 14 [虚拟化] 虚存抽象;Linux进程的地址空间
  8. java需求设计_JavaWeb期末设计---需求分析文档. stage1
  9. go语言的安装、环境变量配置及简单使用
  10. daily scrum 12.2
  11. ElasticSearch 2 (18) - 深入搜索系列之控制相关度
  12. 《数字图像处理 第三版》(冈萨雷斯)——第三章 灰度变换和空间滤波
  13. Faster R-CNN算法详细流程
  14. CLM5.0模式移植篇——驴某人的自我救赎
  15. 个人学习python
  16. java http 传输二进制流_字符流、字节流、二进制及其在HTTP协议传输
  17. Swing批量重命名并导出excel
  18. idea中Rebuild是什么意思
  19. P4720 【模板】扩展卢卡斯
  20. 第五天 01-ftp服务器使用及arp欺骗获取ftp账号密码

热门文章

  1. Excel快速翻译英语句子为中文
  2. 机器学习将会改变所有产业?未来之城将是人工智能的天下!
  3. mysql建立索引 性能测试_mysql数据库索引的建立以及性能测试
  4. 如何通过PE工具箱进行密码破解,系统/数据备份,恢复
  5. windows下maven3.6下载安装配置
  6. 第六章:自定义函数的介绍-自定义函数的介绍与使用(二)
  7. 推荐一个查询基金宏观数据
  8. 在虚幻引擎5中构建你的首款游戏 - 04 - 地形和草地
  9. iTextSharp 使用详解 读写PDF
  10. 互联网协议 — UDP — 报文格式