【问题标题】:c# emgucv conversion of MIplImage type image from BGR color space to HSV color spacec# emgucv MIplImage类型图像从BGR颜色空间到HSV颜色空间的转换
【发布时间】: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


    【解决方案1】:

    他们基于旧的 C 代码创建图像,所以为什么不直接使用 EmguCV Image 或 Mat 对象。它们总是可以在使用 IInputArry 或 IOutputArray 的地方使用。

    道格

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 2018-02-13
      • 1970-01-01
      • 2017-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多