2013-03-27 6 views
4

Я расстроен, пытаясь найти метод, который позволит мне масштабировать объект Mat до другого размера. Пожалуйста, может кто-нибудь мне помочь?Как масштабировать мат в OpenCV

В моем проекте используется оболочка Java, но я буду рад, если ответ будет предоставлен для библиотеки OpenCV на C++.

ответ

8

Если при изменении размера вы имеете в виду масштабирование изображения с помощью функции resize() следующим образом:

resize(src, dst, dst.size(), 0, 0, interpolation); 

В противном случае, если вам просто нужно изменить количество строк вашего Мат использовать функцию Mat::reshape(). Обратите внимание, что Reshape возвращает новый Mat заголовок:

cv::Mat dst = src.reshape (0, newRowVal); 

Наконец, если вы хотите, чтобы произвольно изменить форму Mat (изменение строк и COLS), вы, вероятно, необходимо определить новый Mat с размерами назначения и скопировать Src Mat к нему:

Mat dst(newRowVal, newColVal, src.type()); 
src.setTo(0); 
src.copyTo(dst(Rect(Point(0, 0), src.size()))); 
9

Вы можете использовать функцию resize()

Создать новый Mat результат новых размеров

resize(input    // input image 
     result   // result image 
     result.size()  // new dimensions 
     0, 
     0, 
     INTER_CUBIC  // interpolation method 
    ); 

Чтобы узнать больше методов интерполяции, вы можете проверить этот документ: geometric_transformations.html#resize

Смежные вопросы