我的任务是将使用 kinect V1 进行 Blob 跟踪的程序转换为使用 Kinect v2 进行 Blob 跟踪的程序。
第一个程序是用 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 作为源和 IOutputArray 作为目标,但我找不到在该方法中使用我的变量(类型为 MIplImage)的方法,或者关联 frameVideo 的方法与 IInputArray 和 hsvImg 与 IOutputArray。
我找到了一种将方法与 Image 类型一起使用的方法,但在这种情况下,我还没有找到将 MIplImage 格式转换为 Image 的方法。
谁能帮我?
如果您有更多问题或想了解有关代码的更多详细信息,请与我联系。
非常感谢!