2015-11-09 53 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环......