【发布时间】:2016-12-02 16:41:31
【问题描述】:
我的任务是将使用 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 的方法。
谁能帮帮我?
如果您有更多问题或想了解代码的更多详细信息,请与我联系。
非常感谢!
【问题讨论】:
标签: c# emgucv data-conversion hsv bgr