2016-12-02 6 views
0

моей задачей является преобразование программы для отслеживания blob с помощью kinect V1 в программу для отслеживания blob с использованием Kinect v2.C# emgucv преобразование изображения типа MIplImage из цветового пространства BGR в цветовое пространство HSV

Первая программа написана на C++ и использует opencv. Новая программа должна записываться в C#, поэтому я использую оболочку emgucv.

Первая программа в определенный момент использует эту инструкцию:

cvCvtColor(frameVideo,hsvImg,CV_BGR2HSV); 

frameVideo и hsvImg определяются так:

IplImage* frameVideo=cvCreateImage(cvSize(IMAGE_WIDTH,IMAGE_HEIGHT),8,3); 

IplImage *hsvImg=cvCreateImage(cvSize(IMAGE_WIDTH,IMAGE_HEIGHT),8,3); 

Теперь я пытаюсь эквивалентный способ сделать то же самое с C# и emgu.

Мои эквивалентные переменные определены следующим образом:

MIplImage frameVideo = (MIplImage)Marshal.PtrToStructure(CvInvoke.cvCreateImage(new System.Drawing.Size(Globals.IMAGE_WIDTH, Globals.IMAGE_HEIGHT), IplDepth.IplDepth_8U, 3), typeof(MIplImage)); 

MIplImage hsvImg = (MIplImage)Marshal.PtrToStructure(CvInvoke.cvCreateImage(new System.Drawing.Size(Globals.IMAGE_WIDTH, Globals.IMAGE_HEIGHT), IplDepth.IplDepth_8U, 3), typeof(MIplImage)); 

Внутри emgu есть эквивалентный метод cvCvtColor, то есть CvInvoke.CvtColor (...), синтаксис которого имеет следующий вид:

public static void CvtColor(
    IInputArray src, 
    IOutputArray dst, 
    ColorConversion code, 
    int dstCn = 0 
) 

Ссылка на документацию этого метода: http://www.emgu.com/wiki/files/3.0.0/document/html/80190679-ef98-e1ef-f6b6-4c8b9f3b7f64.htm

Итак, моя проблема заключается в том, что этот метод требует, чтобы работать с IInputArray в качестве источника ап d IOutputArray как назначение, но я не могу найти способ использовать мои переменные (типа MIplImage) в этом методе или способ связать frameVideo с IInputArray и hsvImg с IOutputArray.

Я нашел способ использовать метод с типом изображения, но в этом случае я не нашел способ конвертировать из моего формата MIplImage в Image.

Может ли кто-нибудь мне помочь?

Если у вас есть дополнительные вопросы или если вы хотите получить более подробную информацию о коде, пожалуйста, свяжитесь со мной.

Большое спасибо!

ответ

0

Основываясь на старом C-коде, они создавали изображение, поэтому почему бы просто не использовать объект EmguCV Image <> или Mat. Они всегда могут использоваться там, где используются IInputArry или IOutputArray.

Doug

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