Преобразование необработанного изображения с камеры JAI GigE в растровое изображение на С#

Я использую камеру JAI GigE Vision для получения изображений, но хочу использовать библиотеку AForge на C# для анализа изображений, чтобы создать независимое от камеры решение.

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

Но он возвращает ошибку:

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

Не могли бы вы помочь мне преобразовать необработанное изображение с камеры в растровое изображение?


person alfayadd    schedule 03.05.2015    source источник


Ответы (2)


Вот пример:

   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

person romanoza    schedule 03.05.2015

Если кому надо, я нашел более простой (и быстрый) способ:

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;  
}
person alfayadd    schedule 15.11.2015