→ flyskycat:解決了... 08/23 22:31
各位前輩好:
目前我正在學習影像處理的一些算法~
有看到書上有寫,以下程式碼,註解的部分我用白話來表示↓
//設定與影像大小相同的矩形區
Rectangle rect = new Rectangle(0, 0, curBitmap.Width, curBitmap.Height);
//宣告一個點陣圖資料 bmpData,並且將影像的點陣圖鎖在記憶體中,記憶區塊是一個
//矩形,而此區可供讀寫,資料格式是 PixelFormat (井民全先生的書是寫成
//PixelFormat.Format24ppRgb)
System.Drawing.Imaging.BitmapData bmpData = curBitmap.LockBits(rect,
System.Drawing.Imaging.ImageLockMode.ReadWrite, curBitmap.PixelFormat);
//取得影像存放於記憶體中的起始位址
IntPtr ptr = bmpData.Scan0;
//計算整張影像所佔的 byte 數目,由於每個像素佔 3 個 byte,所以要乘以 3
int bytes = curBitmap.Width * curBitmap.Height * 3;
//創造一個存放 byte 的一維陣列
byte[] grayValues = new byte[bytes];
//將記憶體中的影像資料存入 grayValues 以供處理
System.Runtime.InteropServices.Marshal.Copy(ptr, grayValues, 0, bytes);
目前比較疑惑的是 PixelFormat 的格式要照著書上寫的或者是以井民全先生的
PixelFormat.Format24ppRgb 為主呢?
我有查過 Format24ppRgb 是代表 R,G,B 各佔 8 bits 的格式;可是PixelFormat 就
沒看到是什麼意思 @_@?
照這個方法下去對影像作處理,似乎都是對每個 byte 的 R,G,B 去做處理,如此一
來在做計算的時候會變得有點麻煩。所以想問一下前輩們在做處理時,都是怎麼針對像素
做處理的?(盡量避免 GetPixel & SetPixel,因為會很慢)
我所使用的參考書籍是「C#數字圖像處理算法典型實例」,不知道有沒有更推薦的書
可以供我參考。
在此,先感謝各位不吝指教,如果小弟在觀念上有錯誤,請大力鞭我 >"<
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.122.43.197