伊莉討論區
標題:
利用影像數據 建立影像
[打印本頁]
作者:
a0926319646
時間:
2018-4-26 02:42 PM
標題:
利用影像數據 建立影像
本帖最後由 a0926319646 於 2018-4-26 02:43 PM 編輯
第一次接觸影像處理,需要利用影像資料二微陣列建立影像,以下程式碼是網路上找的資料,由於我的影像資料(2448*2048)有500萬pixel的資料,但我的picturebox只有(816*683)約50幾萬pixel,我先將pixel資料降低像素 ,因為建立的影像只需要是黑白的,因而使用G 二微陣列來建立, 輸出如下圖 ,請教各位大大哪個部分有問題。
[attach]123149237[/attach][attach]123149237[/attach]
作者:
licious0421
時間:
2018-4-27 09:55 AM
你和我再做得一模一樣ㄟ?!
你若是黑白的圖 RGB 會相同
picturebox 可以而外增加卷軸支援你的圖片
作者:
licious0421
時間:
2018-4-27 09:58 AM
BitmapData sourceData = bm.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
IntPtr source_scan = sourceData.Scan0;
int ByteNumber_Width = sourceData.Width * 3;
int stride = sourceData.Stride; //Stride 是單一資料列的像素 (掃描線),無條件進位到四個位元組界限的寬度。 如果 stride 是正數,點陣圖是由上而。 如果 stride 是負值,點陣圖是由下往。
int pix;
unsafe
{
byte* source_p = (byte*)source_scan.ToPointer();
for (int h = 0; h < sourceData.Height; h++)
{
for (int w = 0; w < sourceData.Width; w++)
{
pix = buf[h * width + w] ; //注意 pix 只能在0~255之間
source_p[0] = (byte)pix; //R
source_p++;
source_p[0] = (byte)pix; //G
source_p++;
source_p[0] = (byte)pix; //B
source_p++;
}
source_p += (stride - ByteNumber_Width);
}
}
bm.UnlockBits(sourceData);
歡迎光臨 伊莉討論區 (http://mobile.eyny.com/)
Powered by Discuz!