C# 圖片處理之:彩色圖片轉為黑白圖
首先解釋下所謂的黑白圖片。其實更準確地應該叫256級灰度圖。當一個顏色點的R=G=B時,就是我們所謂的“灰色”。由於RGB的取值範圍在[0,255],所以一共只有256種可能。
所以彩色圖片轉為黑白圖片的原理非常簡單。只要掃描彩圖的每一點,讓輸出圖對應點的R=G=B就成了。現在問題的關鍵就是如何取值了。
一般有兩種,一種是彩圖RGB三分量的算數平均值,另一種是加權平均值。加權平均是考慮到人類眼睛對不同分量的敏感程度。
具體程式碼如下:
///<summary>
/// 變成黑白圖
///</summary>
///<param name="bmp">
///<param name="mode">模式。0:加權平均 1:算數平均</param>
///<returns></returns>
private Bitmap ToGray(Bitmap bmp,int mode)
{
if (bmp ==null)
{
returnnull;
}
int w = bmp.Width;
int h
try
{
byte newColor =0;
BitmapData srcData = bmp.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
unsafe
{
byte* p = (byte*)srcData.Scan0.ToPointer();
{
for (int x =0; x < w; x++)
{
if (mode ==0) // 加權平均
{
newColor = (byte)((float)p[0] *0.114f+ (float)p[1] *0.587f+ (float)p[2] *0.299f);
}
else// 算數平均
{
newColor = (byte)((float)(p[0] + p[1] + p[2]) /3.0f);
}
p[0] = newColor;
p[1] = newColor;
p[2] = newColor;
p +=3;
}
p += srcData.Stride - w *3;
}
bmp.UnlockBits(srcData);
return bmp;
}
}
catch
{
returnnull;
}
}
相關推薦
C# 圖片處理之:彩色圖片轉為黑白圖
首先解釋下所謂的黑白圖片。其實更準確地應該叫256級灰度圖。當一個顏色點的R=G=B時,就是我們所謂的“灰色”。由於RGB的取值範圍在[0,255],所以一共只有256種可能。 所以彩色圖片轉為黑白圖片的原理非常簡單。只要掃描彩圖的每一點,讓輸出圖對應點的R=G=B就成了。現
C#圖片處理之:在圖片上畫框(圈)
有時候給別人演示圖片,例如培訓某個軟體使用的時候,往往需要在畫面上畫個框或者圈,提醒使用者注意這是個重點。其實這個功能並不難,只需要知道Pen物件的用法就可以了。我們對框或者圈樣式的控制都可以通過對Pen的控制來實現。 /**////<summary>
C#圖片處理之:圖片縮放和剪裁
應聽眾點播要求,今天說說用C#做圖片的縮放和剪裁,相信很多人會對這部分內容感興趣,畢竟這個操作太實用了。 其實在GDI+中,縮放和剪裁可以看作同一個操作,無非就是原始區域的選擇不同罷了。空口無憑,先看具體演算法可能更好理解。 /// <summary&g
圖片處理之 Base64
col ack 頁面 發送 http 簡單 文件大小 pan class 網頁上的圖片資源如果采用 http 形式的 url 的話都會額外發送一次請求,網頁發送的 http 請求次數越多,會造成頁面加載速度越慢。而采用Base64格式的編碼,將圖片轉化為字符串後,圖
Android - 圖片處理之Glide4.0
郭大神關於Glide文章的連線,很詳細 Android圖片載入框架最全解析(一),Glide的基本用法 Android圖片載入框架最全解析(二),從原始碼的角度理解Glide的執行流程 Android圖片載入框架最全解析(三),深入探究Glide的快取機制 Android圖
Android圖片處理之Glide使用大全
聽說Glide是一個牛逼的圖片載入庫,作者是bumptech,然後這個庫被廣泛的應用在谷歌的官方app裡,也就是谷歌支援我們使用這個來載入圖片庫,所以呢就需要響應谷歌的要求,就像網路訪問我們用volley,然後大部分安卓開發者都棄用eclipse轉戰andro
自然語言處理之:c++中文分詞(附原始碼)
githup地址:https://github.com/jbymy 一、簡介 中文分詞是地然語言處理中的最基礎的環節,到目前為止已經有不少優秀的分詞工具的出現,如“中科院分詞”,“結
python&圖片處理之PIL.Image模組(icon圖示)
2.解壓後,進入到目錄下cd /Users/jianan/Downloads/Imaging-1.1.73.python setup.py install 安裝在/Library/Python/2.7
淺談android中圖片處理之圖形變換特效Matrix(四)
今天,我們就來談下android中圖片的變形的特效,在上講部落格中我們談到android中圖片中的色彩特效來實現的。改變它的顏色主要通過ColorMatrix類來實現。 現在今天所講的圖片變形的特效主要就是通過Matrix類來實現,我們通過上篇部落格知道,改變色彩特效,主要
淺談android中圖片處理之色彩特效處理ColorMatrix(三)
在android開發中對圖片處理很是頻繁,其中對圖片的顏色處理就是很常見的一種。我們經常看到一些類似美圖秀秀,美顏相機的app,為什麼那麼黑的人拍出來是確實那麼地白呢?長的那麼那個(醜)的人,用美顏相機拍出來的看起來也有那麼回事(拍出來就感覺挺漂亮)。就像網上有個段子,有錢
【Python】圖片處理之“PythonMagick”庫簡易安裝筆記
“ImageMagick”可以說是開源的程式碼/命令列版PS,它支援包括建立、編輯、構圖再到格式轉換的圖片處理功能。更重要的是,它幾乎完整支援大部分程式語言,其中Python的介面庫就是“Pytho
自然語言處理之:搭建基於HanLP的開發環境(轉)
環境搭建比FNLP的簡單,具體參考:https://github.com/hankcs/HanLP 各個版本的下載:https://github.com/hankcs/HanLP/releases 完畢後有一個報錯: 字元型別對應表載入失敗: D:/eclipse_workspace
C#設計模式之:備忘錄模式
備忘錄模式(Memento) 在不破壞封裝性的前提下,捕獲一個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態 UML 程式碼 class Mem
C#設計模式之:命令模式
命令模式Command 將一個請求封裝為一個物件,從而使你可用不同的請求對客戶進行引數化;對請求排隊或記錄請求日誌,以及支援可撤銷操作。 UML 程式碼 abstract class Command
C進階之:記憶體對齊
什麼是記憶體對齊? 記憶體對齊可以用一句話來概括: “資料項只能儲存在地址是資料項大小的整數倍的記憶體位置上”。例如int型別佔用4個位元組,地址只能在0,4,8等位置上。 不同型別的資料在記憶體中按照一定的規則排列,而不一定是順序的一個接一個的排列,這就是所謂的
IOS應用開發-圖片處理(拉伸圖片 建立縮圖 解決圖片旋轉的問題 圖片編碼及上傳 將圖片寫入磁碟)
在做專案時我們經常要對圖片進行一些處理,以達到效能優化或滿足需求。常見的情形有以下幾種 //http://stackoverflow.com/questions/5427656/ios-uiimagepickercontroller-result-image-orien
C#設計模式之:裝飾模式
裝飾模式(Decorator): 動態地給一個物件新增一些額外的職責,就增加功能來說,裝飾模式比生在子類更為靈活 UML類圖 Component 是定義一個物件介面,可以給這些
C#設計模式之:工廠方法模式
工廠方法模式(Factory Method): 定義一個用於建立物件的介面,讓子類決定例項化哪一個類。工廠方法使一個類的例項化延遲到其子類 回顧之前簡單工廠 簡單工廠的核心程式碼 class OperationFactory { public
影象增強處理之:同態濾波與Retinex演算法(三)Retinex鄰域演算法:SSR,MSR,MSRCR
關於Retinex的基礎知識這裡就不再說了,http://blog.csdn.net/piaoxuezhong/article/details/78248219已經介紹過了,本篇將繼續講一下基於鄰域的
c# 設計模式 之:工廠模式之---工廠模式
gas exec load common pre bubuko 技術分享 ron deb 1、uml類圖: 實現和依賴關系: 實現: SportFactory、JeepFactory、HatchbackFactory 實現 IFactory 接口 SportCa