2016-12-02 11 views
0

私の仕事は、Kinect v2を使用してblobを追跡するプログラムにkinect V1を使ってブロブを追跡するプログラムを変換することです。MIplImageタイプの画像をBGRの色空間からHSVの色空間に変換する

最初のプログラムはC++で書かれており、opencvを使用します。新しいプログラムはC#で書かなければならないので、私はラッパーemgucvを使用しています。私は同じことを同等の方法をしようとしている、今

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

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

cvCvtColor(frameVideo,hsvImg,CV_BGR2HSV); 

frameVideoとhsvImgは、次のように定義されています。

、ある時点での最初のプログラムは、この命令を使用しています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

だから、私の問題は、この方法は、ソースとIOUとしてIInputArrayで動作するように要求することですtputArrayを宛先として使用していますが、そのメソッドで変数(MIplImage型)を使用する方法や、frameVideoをIInputArrayおよびhsvImgとIOutputArrayに関連付ける方法を見つけることができません。

私は画像タイプでこのメソッドを使用する方法を見つけましたが、このケースでは私のMIplImageフォーマットからImageに変換する方法が見つかりませんでした。

誰でも手伝ってもらえますか?

ご質問がある場合や、コードの詳細については、私にご連絡ください。

ありがとうございます!

答えて

0

古いCコードに基づいて画像を作成していたので、なぜEmguCV Image <>またはMatオブジェクトを使用しないのですか?いつでもIInputArryまたはIOutputArrayが使用されている場所で使用できます。

ダグ

関連する問題