我的任務是使用Kinect v2將一個用kinect V1進行斑點跟蹤的程序轉換爲一個程序。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工作作爲源和IOU tputArray作爲目標,但是我找不到在該方法中使用我的變量(類型爲MIplImage)的方法,或者將frameVideo與IInputArray和hsvImg與IOutputArray關聯的方法。
我發現了一種方法來使用圖像類型的方法,但在這種情況下,我還沒有找到一種方法來從我的MIplImage格式轉換爲圖像。
任何人都可以幫助我嗎?
如果您還有其他問題或者想了解更多關於代碼的詳細信息,請與我聯繫。
非常感謝!