2016-11-08 2 views
0

я получаю текущее исключение:BlobCounter формат неподдерживаемый пиксель

UnsupportedImageFormatException: Unsupported pixel format of the source image. 
AForge.Imaging.BlobCounter.BuildObjectsMap (AForge.Imaging.UnmanagedImage image) 
AForge.Imaging.BlobCounterBase.ProcessImage (AForge.Imaging.UnmanagedImage image) 
AForge.Imaging.BlobCounterBase.ProcessImage (System.Drawing.Imaging.BitmapData imageData) 
AForge.Imaging.BlobCounterBase.ProcessImage (System.Drawing.Bitmap image) 
cam.blobCounter (System.Drawing.Bitmap videoOutput, AForge.Imaging.BlobCounter bc) (at Assets/Scripts/cam.cs:127) 
cam.Update() (at Assets/Scripts/cam.cs:69) 

Что вызвано моей blobCounter не принимающему мой текущий формат изображения. Чтобы исправить это, я использовал метод конвертации: Bitmap yellowClone = AForge.Imaging.Image.Clone(originalBm, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

Но я все еще получаю сообщение об ошибке (несмотря на попытки использовать каждый формат).

Для контекста, вот мой код, с originalFeedTexture быть питающий WebCam:

byte[] bytes = originalFeedTexture.EncodeToJPG(); 
     using (var ms = new MemoryStream(bytes)) 
     { 
      originalBm = new Bitmap(ms); 
     } 

     Bitmap yellowClone = AForge.Imaging.Image.Clone(originalBm, System.Drawing.Imaging.PixelFormat.Format32bppArgb); 

yellow = new Bitmap(yellowClone); 
yellowFilter(yellow); 
BlobCounter bc = new BlobCounter(); 
     blobCounter(yellowClone, bc); 
     Rectangle[] rects = bc.GetObjectsRectangles(); 

     if (bc.ObjectsCount >= 1) 
     { 
      Debug.Log("Swedes"); 
     } 

Моя yellowFilter функция:

void yellowFilter(Bitmap videoOutput) 
    { 
     HSLFiltering yellowHslFilter = new HSLFiltering(); 
     yellowHslFilter.Hue = new IntRange(40, 70); 
     yellowHslFilter.Saturation = new DoubleRange(0.3f, 0.9f); 
     yellowHslFilter.Luminance = new DoubleRange(0.3f, 0.8f); 

     yellowHslFilter.ApplyInPlace(videoOutput); 
    } 

И моя blobCounter функция:

void blobCounter(Bitmap videoOutput, BlobCounter bc) 
    { 
     bc.ObjectsOrder = ObjectsOrder.Size; 
     bc.ProcessImage(videoOutput); 
    } 

EDIT : Как я и забыл упомянуть, ошибка указана в следующей строке: blobCounter(yellowClone, bc);

+0

Я думаю, вы должны указать на строку кода, где вы получите ошибку в своем вопросе – Programmer

ответ

0

Я исправил проблему, изменив номер версии AForge.net. Я тестировал несколько версий, и кажется, что при использовании этого точного кода проблема появляется только в версии 2.0.0.

Смежные вопросы