【问题标题】:How to convert an IplImage to Mat?如何将 IplImage 转换为 Mat?
【发布时间】:2018-11-09 03:22:33
【问题描述】:

我正在尝试了解如何进行此转换,但我仍然遇到同样的错误。我需要在 JAVA 中将 ipl 图像转换为 mat 以获取图像的 pyrDown。 这里的错误:类型不匹配:无法从 opencv_core.IplImage 转换为 Mat

public class Image {
    IplImage i;
    public void downsample(){
        System.loadLibrary( Core.NATIVE_LIBRARY_NAME );             
        Mat Out= new Mat();
        Mat in(i); //  error in this line
        //Down sample the image by factor of 2
        Imgproc.pyrDown(in, Out);
    }
}

【问题讨论】:

  • 你根本没有帮助我。在此链接中,他们正在谈论:1)C++ 2)旧的构造函数
  • 抱歉,您错过了 Java 标记。另外,有人问hereIplImage 是一种已弃用的格式,将此类作为输入的Mat 的构造函数在较新版本的 c++ 中被删除,并且从未在 Java 版本的 OpenCV 中实现。我认为JavaCV虽然使用了它。在链接中有某种解决方案,但似乎会很慢。真的有必要使用 IplImage 吗?或者你可以从一开始就使用Mat
  • 感谢您的回复。不幸的是,我需要转换它,否则唯一的解决方案(对于主项目)是将视频的帧直接转换为 mat 或缓冲图像而不是 IplImage,但我不知道这是否可能
  • 也许你可以尝试使用i.getByteBuffer()获取一个字节数组,然后创建一个相同大小的Mat,然后使用put将数据放入其中
  • 我做到了。我换了系统。我正在使用 VideoCapture 获取帧并将它们作为垫子对象处理。谢谢你的帮助。祝你有美好的一天

标签: java opencv opencv3.0 mat iplimage


【解决方案1】:

将 IplImage 转换为 Mat 很简单。

iplImage iplImage= cvLoadImage("image.png");

Mat matImage = new Mat(iplImage);

反之亦然

【讨论】:

    【解决方案2】:

    适合我的代码:

        CvMat mat = cvLoadImageM (filename, iscolor);
    

    如果颜色:iscolor=1

    如果是灰色:iscolor=0

    例如:

    CvMat mat = cvLoadImageM("./image.png", 1);
    

    【讨论】:

      猜你喜欢
      • 2011-06-07
      • 2017-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-19
      • 2011-09-04
      相关资源
      最近更新 更多