Как конвертировать IplImage в Mat?

Я пытаюсь понять, как сделать это преобразование, но у меня все еще есть та же ошибка. Мне нужно преобразовать IN JAVA изображение ipl в мат, чтобы получить 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);
    }
}

person V8607    schedule 10.05.2016    source источник
comment
Вы мне совсем не помогаете. В этой ссылке речь идет о: 1) C++ 2) старом конструкторе   -  person V8607    schedule 10.05.2016
comment
Извините за это, вы пропустите тег Java. Кроме того, здесь был задан вопрос . IplImage является устаревшим форматом, а конструктор Mat, который имел этот класс в качестве входных данных, был удален в более новых версиях С++ и никогда не был реализован в Java-версии OpenCV. Я думаю, что JavaCV использовал его. В ссылке есть какое-то решение, но, похоже, оно будет медленным. Действительно ли необходимо использовать IplImage? или вы могли бы просто использовать Mat с самого начала?   -  person api55    schedule 10.05.2016
comment
Спасибо за ваш ответ. К сожалению, мне нужно преобразовать это, иначе единственным решением (для основного проекта) является преобразование кадров видео непосредственно в мат или буферизованное изображение вместо IplImage, но я не знаю, возможно ли это   -  person V8607    schedule 10.05.2016
comment
Возможно, вы можете попробовать использовать i.getByteBuffer() для получения массива байтов, а затем создать Mat того же размера, а затем использовать put для помещения в него данных.   -  person api55    schedule 10.05.2016
comment
Я сделал это, чувак. Я изменил систему. Я получаю кадры с помощью VideoCapture и обрабатываю их как матовые объекты. Спасибо за вашу помощь. Хорошего дня   -  person V8607    schedule 10.05.2016
comment
@ Api55, если вы опубликуете свои комментарии в качестве ответа, за них можно будет проголосовать, поскольку ответ в связанном вопросе кажется устаревшим, как вы указали. Это может быть полезно для будущих посетителей.   -  person HopefullyHelpful    schedule 23.05.2016


Ответы (2)


Преобразовать IplImage в Mat очень просто.

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

Mat matImage = новый коврик (iplImage);

наоборот

person Aqeel Haider    schedule 18.09.2016

Код, который работает для меня:

    CvMat mat = cvLoadImageM (filename, iscolor);

Если цвет: iscolor=1

Если серый: iscolor=0

Например:

CvMat mat = cvLoadImageM("./image.png", 1);
person Anton Tsyopa    schedule 08.11.2018