【问题标题】:How do I convert Emgu::CV::Mat to OpenCV cv::Mat and vice versa?如何将 Emgu::CV::Mat 转换为 OpenCV cv::Mat,反之亦然?
【发布时间】:2016-08-16 16:02:24
【问题描述】:

我必须在 C++/CLI 的托管和非托管代码中使用 OpenCV。

我正在托管代码中尝试 Emgu CV 来环绕 OpenCV 对象,但我在进行转换时遇到了麻烦。

我该如何做这样的事情:

Emgu::CV::Mat convert = Function_That_Returns_OpenCV_CV_Mat();

或者这个:

Function_That_Takes_OpenCV_CV_Mat(Emgu_CV_Mat_variable);

?

【问题讨论】:

    标签: opencv image-processing c++-cli emgucv


    【解决方案1】:

    从 OpenCV Mat 到 Emgu Mat:

    cv::Mat openCvMat = Function_That_Returns_OpenCV_CV_Mat();
    System::IntPtr openCvMatSystemIntPtr = openCvMat.ptr;
    Emgu::CV::Mat^ result = 
       Emgu::CV::CvInvoke::CvArrToMat(
          openCvMatSystemIntPtr, false, false, 0);
    

    【讨论】:

    • 另一个方向呢?
    • 这对我来说似乎有些不安全。此时,openCvMat 和 result 都不会声明对指针的所有权(因为您没有复制内存,因为您为该参数指定了 false )并且其中一个或另一个可以很容易地在另一个之前被处理掉?跨度>
    猜你喜欢
    • 2017-06-03
    • 2012-01-23
    • 2018-04-16
    • 2011-06-28
    • 2015-02-05
    • 2022-06-25
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多