看板 C_Sharp 關於我們 聯絡資訊
各位前輩好: 目前我正在學習影像處理的一些算法~ 有看到書上有寫,以下程式碼,註解的部分我用白話來表示↓ //設定與影像大小相同的矩形區 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
flyskycat:解決了... 08/23 22:31