2015-05-03 81 views
1

我正在使用JAI GigE Vision相機進行圖像採集,但我想在C#中使用AForge Library進行圖像分析以創建相機獨立解決方案。將原始圖像從JAI GigE相機轉換爲位圖C#

Jai_FactoryWrapper.ImageInfo localImageInfo = new Jai_FactoryWrapper.ImageInfo(); 
image = (Bitmap)localImageInfo; 

但它給回一個錯誤:

Cannot convert type 'Jai_FactoryDotNET.Jai_FactoryWrapper.ImageInfo' to 'System.Drawing.Bitmap' 

你能幫我如何將原始圖像從相機轉換爲位圖圖像?

回答

1

下面是一個例子:

Bitmap image = GetBitmap((int)ImageInfo.SizeX, (int)ImageInfo.SizeY, 8, (byte*)ImageInfo.ImageBuffer); 

其中GetBitmap是:

public Bitmap GetBitmap(int nWidth, int nHeight, int nBpp, byte* DataColor) 
    { 
     Bitmap BitmapImage = new Bitmap(nWidth, nHeight, PixelFormat.Format24bppRgb); 

     BitmapData srcBmpData = BitmapImage.LockBits(new Rectangle(0, 0, BitmapImage.Width, BitmapImage.Height), 
      ImageLockMode.ReadWrite, BitmapImage.PixelFormat); 

     switch (BitmapImage.PixelFormat) 
     { 
      case PixelFormat.Format24bppRgb: 
       unsafe 
       { 
        byte* psrcBuffer = (byte*)srcBmpData.Scan0.ToPointer(); 

        int nCount = srcBmpData.Width * srcBmpData.Height; 
        int nIndex = 0; 

        for (int y = 0; y < nCount; y++) 
        { 
         psrcBuffer[nIndex++] = DataColor[y]; 
         psrcBuffer[nIndex++] = DataColor[y]; 
         psrcBuffer[nIndex++] = DataColor[y]; 
        } 
       } 
       break; 
     } 

     BitmapImage.UnlockBits(srcBmpData); 

     return BitmapImage; 
    } 

我在這裏找到:http://visioninspection.googlecode.com/svn/trunk/print_2/Vision.ETNI/CControl_JAI2.cs

1

如果有人需要它,我發現了一個更簡單的(和更快)方式:

internal static Bitmap convertToBitmap(Jai_FactoryDotNET.Jai_FactoryWrapper.ImageInfo ImageInfo) 
{ 
    Bitmap image = new Bitmap((int)ImageInfo.SizeX, (int)ImageInfo.SizeY, (int)ImageInfo.SizeX, System.Drawing.Imaging.PixelFormat.Format24bppRgb, ImageInfo.ImageBuffer); 
    return image; 
}