欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

判斷圖片-判斷位圖是否是黑白圖片的方法

 更新時(shí)間:2013年05月09日 10:19:51   作者:  
近來(lái)工作需要判斷圖片否是是彩色的,由于是十萬(wàn)張以上的大批量理處,所以通過(guò)序程來(lái)動(dòng)自判斷。

     圖片象對(duì):經(jīng)過(guò)理處過(guò)的jpg格式的位圖(頭像照片)

    算法道理:

    通過(guò)個(gè)每像素點(diǎn)的RGB值來(lái)行進(jìn)判斷。我們道知,位圖都是由像素點(diǎn)形成的,個(gè)每像素點(diǎn)都有一個(gè) RBG值,所以可以通過(guò)RGB值來(lái)判斷圖片否是是彩色的。

    【RGB】:R代表紅,G代表綠,B代表藍(lán),通過(guò)三原色道理來(lái)形成豐富多彩的色顏。

     開(kāi)端思緒:

    1、純彩色圖片,只有判斷像素點(diǎn)的色顏是黑還是白就能夠了,一旦碰到非彩色色顏,就能夠以為長(zhǎng)短彩色圖片。

    2、灰階彩色圖片,由于有灰階,所以不是能通過(guò)像素點(diǎn)否是是彩色來(lái)判斷,但是灰階像素點(diǎn)的RGB有個(gè)特色:【R=G=B】

     算法優(yōu)化:

    1、純彩色,只有白黑二色,白色RGB【R=G=B=255】,色黑【R=G=B=0】;

    2、灰階,RGB【R=G=B】;

    可以看出無(wú)論是彩色還是灰階都是RGB中【R=G=B】

    碰到問(wèn)題:

    有些可以以為是彩色圖片,存在偏綠或者偏紅的況情,用【R=G=B】法無(wú)判斷出來(lái)。

    理處思緒:

    雖然這些圖片【R<>B<>G】但是色顏大體一致都是近靠灰階色顏,所以R,G,B的差值該應(yīng)不是很大,經(jīng)過(guò)我自己測(cè)試,發(fā)明種這【有偏色的彩色照片】圖片中的有所像素點(diǎn)的R,G,B差值絕對(duì)最大值不超越50(R-G,R-B,G-B),而彩色圖片中的R,B,G差值存在絕對(duì)值最大值存在超越 50的像素點(diǎn)。

    單簡(jiǎn)說(shuō)來(lái)就是:

    1、【自定義】色偏值 Diff = Max(|R-G|,|R-B|,|G-B|);

    2、彩色圖片有所圖片中最大的 Diff < 50;

 【P.S:這個(gè)算法可能存在誤差,格嚴(yán)意義上說(shuō)來(lái)R=G=B,Diff=0才對(duì)。】

     詳細(xì)現(xiàn)實(shí):

復(fù)制代碼 代碼如下:

/// <summary>
/// 判斷圖片否是是彩色
/// </summary>
/// <param name="filename">圖片文件路徑</param>
/// <returns></returns>
public bool isBlackWhite(string filename)
{
   Color c = new Color();

   using (Bitmap bmp = new Bitmap(filename))
   {
      //歷遍圖片的像素點(diǎn)
      for (int y = 0; y < bmp.Height; y++)
      {
         for (int x = 0; x < bmp.Width; x++)
         {
            c = bmp.GetPixel(x, y);

     //判斷像素點(diǎn)的色偏差值Diff
            if (GetRGBDiff(c.R, c.G, c.B) > 50)
            {
               return false;
             }
          }
       }

       return true;
    }
}


復(fù)制代碼 代碼如下:

public int GetRGBDiff(int r,int g,int b)
{
   //略,很單簡(jiǎn)的,就是取r-g,r-b,g-b絕對(duì)值的最大值。
}

相關(guān)文章

  • C#關(guān)于類的只讀只寫(xiě)屬性實(shí)例分析

    C#關(guān)于類的只讀只寫(xiě)屬性實(shí)例分析

    這篇文章主要介紹了C#關(guān)于類的只讀只寫(xiě)屬性實(shí)例分析,對(duì)于初學(xué)者更好的理解類的只讀只寫(xiě)屬性有一定的幫助,需要的朋友可以參考下
    2014-07-07
  • C#圓角窗體簡(jiǎn)單實(shí)現(xiàn)方法

    C#圓角窗體簡(jiǎn)單實(shí)現(xiàn)方法

    這篇文章主要介紹了C#圓角窗體簡(jiǎn)單實(shí)現(xiàn)方法,涉及C#窗體設(shè)置的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • C#使用Jquery zTree實(shí)現(xiàn)樹(shù)狀結(jié)構(gòu)顯示 異步數(shù)據(jù)加載

    C#使用Jquery zTree實(shí)現(xiàn)樹(shù)狀結(jié)構(gòu)顯示 異步數(shù)據(jù)加載

    這篇文章主要為大家詳細(xì)介紹了C#使用Jquery zTree實(shí)現(xiàn)樹(shù)狀結(jié)構(gòu)顯示和異步數(shù)據(jù)加載,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Winform窗體效果實(shí)例分析

    Winform窗體效果實(shí)例分析

    這篇文章主要介紹了Winform窗體效果,涉及WinForm窗體設(shè)計(jì)的常見(jiàn)參數(shù)設(shè)置及使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • C#串口通信模塊使用方法示例

    C#串口通信模塊使用方法示例

    這篇文章主要介紹了C#串口通信模塊使用方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • C#設(shè)計(jì)模式之行為型模式詳解

    C#設(shè)計(jì)模式之行為型模式詳解

    這篇文章主要為大家詳細(xì)介紹了C#設(shè)計(jì)模式之行為型模式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • C#加密在實(shí)際中的應(yīng)用

    C#加密在實(shí)際中的應(yīng)用

    在系統(tǒng)的管理員有著實(shí)際的應(yīng)用,對(duì)于一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)說(shuō),數(shù)據(jù)庫(kù)安全還是挺重要的,所以在存入到數(shù)據(jù)庫(kù)的密碼通常都是加密的
    2012-11-11
  • C#實(shí)現(xiàn)按照指定長(zhǎng)度在數(shù)字前補(bǔ)0方法小結(jié)

    C#實(shí)現(xiàn)按照指定長(zhǎng)度在數(shù)字前補(bǔ)0方法小結(jié)

    這篇文章主要介紹了C#實(shí)現(xiàn)按照指定長(zhǎng)度在數(shù)字前補(bǔ)0方法,實(shí)例總結(jié)了兩個(gè)常用的數(shù)字補(bǔ)0的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • c#通過(guò)反射實(shí)現(xiàn)對(duì)象自動(dòng)映射的實(shí)現(xiàn)

    c#通過(guò)反射實(shí)現(xiàn)對(duì)象自動(dòng)映射的實(shí)現(xiàn)

    本文主要介紹了c#通過(guò)反射完成對(duì)象自動(dòng)映射的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • C#+EmguCV使用攝像頭讀取、保存視頻

    C#+EmguCV使用攝像頭讀取、保存視頻

    這篇文章主要為大家詳細(xì)介紹了C#+EmguCV使用攝像頭讀取、保存視頻,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評(píng)論