2015-05-03 6 views
1

Я использую камеру JAI GigE Vision для получения изображений, но я хочу использовать библиотеку AForge на C# для анализа изображения для создания независимого от камеры решения.Преобразование необработанного изображения с камеры 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; 
}