2015-11-09 86 views
0

我有一個12位灰度相機,我想用EMGU來處理圖像。EMGU灰色TColor與UInt16深度

我的問題是,我要處理的「UINT16」 TDepth我創建一個空的2D圖像的圖像,而不是通常的「字節」

所以最初:

Image<Gray, UInt16> OnImage = new Image<Gray, UInt16>(960, 1280); 

然後創建一個for循環我的圖片從一維向量形式傳輸到2D圖像:

for (int i=1; i< 960; i++) 
    { 
     for (int j = 1; j < 1280; j++) 
     { 
      OnImage[i, j] = MyImageVector[Counter]; 
      Counter++; 
     } 
    } 

其中:

int[] MyImageVector = new int[1228800]; 

的問題是在該行:

OnImage[i, j] = MyImageVector[Counter]; 

在那裏我得到以下錯誤信息:

不能隱式轉換類型 「INT」 到 「EMGU.CV.Structure.Gray」

爲什麼會發生這種情況?

你知道任何方式,我可以將Int值存儲到Emgu圖像對象?

任何替代解決方法也是有幫助的。

謝謝

+1

我m不是來自EMGU的區域,但它聽起來像一個純粹的C#問題。您可以使用UInt6類型的成員來定義一個類,而不是使用UInt16。這個類應該繼承Gray類。確保您正確初始化類並在每次更改時更新父類。還要確保父類不是直接更新的,而只是通過子類。 – MaMazav

+0

謝謝你的建議!我按照你的指示,它的工作。我還發現了另一個我將在這裏發佈的解決方案...謝謝 – Spyros

回答

1

我找到了一個替代解決方案,以一維矢量傳遞到一個二維EMGU.Image:

Image<Gray, Single> _myImage= new Image<Gray, Single>(Width, Height); 
Buffer.BlockCopy(MyVector, 0, _myImage.Data, 0, MyVector.Length * sizeof(Single)); 

這樣更快的是2環......