台灣最大程式設計社群網站
線上人數
915
 
會員總數:242479
討論主題:187518
歡迎您免費加入會員
討論區列表 >> C# >> 影像數據 二維陣列 建立影像
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
影像數據 二維陣列 建立影像
價值 : 50 QP  點閱數:152 回應數:0

樓主

Jay
門外漢
0 1
6 0
發送站內信

小弟因工作需求在撰寫利用影像數據 建立影像 以下程式碼是我在網路上搜尋資料參考的範例
由於我的數據是(2448*2048)500萬pixel的影像資料 但軟體上的picturebox 只有(816*683)約50萬pixel
所以小弟先用迴圈將500萬Pixel的影像資料縮小 最後影像輸出如下圖 不知道哪部分有錯誤請教有經驗的大大幫幫忙
int x = 0;
int y = 0;
for (int i = 1; i < 2448; i += 3)
{
for (int j = 1; j < 2048; j += 3)
{
Sy[x, y] = greenar[i, j];

y++;
}
y = 0;
x++;
}

public static Bitmap Create(int[,] R, int[,] G, int[,] B)
{
int iWidth = G.GetLength(1);
int iHeight = G.GetLength(0);
Bitmap Result = new Bitmap(iWidth, iHeight,
System.Drawing.Imaging.PixelFormat.Format24bppRgb);
Rectangle rect = new Rectangle(0, 0, iWidth, iHeight);
System.Drawing.Imaging.BitmapData bmpData = Result.LockBits(rect,
System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
IntPtr iPtr = bmpData.Scan0;
int iStride = bmpData.Stride;
int iBytes = iWidth * iHeight * 3;
byte[] PixelValues = new byte[iBytes];
int iPoint = 0;
for (int i = 0; i < iHeight; i++)
{
for (int j = 0; j < iWidth; j++)
{
int iG = G[i, j];
int iB = G[i, j];
int iR = G[i, j];
PixelValues[iPoint] = Convert.ToByte(iB);
PixelValues[iPoint + 1] = Convert.ToByte(iG);
PixelValues[iPoint + 2] = Convert.ToByte(iR);
iPoint += 3;
}
}
System.Runtime.InteropServices.Marshal.Copy(PixelValues, 0, iPtr, iBytes);
Result.UnlockBits(bmpData);
return Result;

}

搜尋相關Tags的文章: [ 影像處理 ] , [ 影像建立 ] ,
本篇文章發表於2018-04-26 13:48
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
目前尚無任何回覆
   

回覆
如要回應,請先登入.