Самый быстрый способ перемещения изображения в OpenCV

Я разрабатываю простой стабилизатор, и у меня возникают трудности со смещением изображения. Пример — у меня два изображения (A и B) смещены относительно друг друга на несколько пикселей. Я рассчитываю смещение, используя фазовые корреляции. Следующим шагом мне нужно переместить второе изображение по смещению изображения. Пример представлен на изображении. Как мне решить эту проблему?

Есть ссылка для предварительного просмотра изображения:

иллюстрация

5

Решение

cv :: Rect и cv :: Mat :: copyTo

cv::Mat img=cv::imread("image.jpg");
cv::Mat imgTranslated(img.size(),img.type(),cv::Scalar::all(0));
img(cv::Rect(50,30,img.cols-50,img.rows-30)).copyTo(imgTranslated(cv::Rect(0,0,img.cols-50,img.rows-30)));
6

Другие решения

setTo (0) целевое изображение, затем используйте оператор () cv :: Mat для создания подизображения входного изображения и выходного изображения (вы будете использовать 2 cv :: Rect с одинаковым размером и различным смещением; размер зависит от смещения, т. е. большее смещение означает меньшую часть изображения, которую можно скопировать на выходе). Затем используйте метод copyTo.

Сказал следующее: обычно, задавая вопрос, вы показываете код, показывающий, что вы уже пробовали.

2

Моя реализация позволяет сдвиг быть в любой направление …

using namespace cv;
//and whatever header 'abs' requires...

Mat offsetImageWithPadding(Const Mat& originalImage, int offsetX, int offsetY, Scalar backgroundColour){
padded = Mat(originalImage.rows + 2 * abs(offsetY), originalImage.cols + 2 * abs(offsetX), CV_8UC3, backgroundColour);
originalImage.copyTo(padded(Rect(abs(offsetX), abs(offsetY), originalImage.cols, originalImage.rows)));
return Mat(padded,Rect(abs(offsetX) + offsetX, abs(offsetY) + offsetY, originalImage.cols, originalImage.rows));
}

//example use with black borders along the right hand side and top:
Mat offsetImage = offsetImageWithPadding(originalImage, -10, 6, Scalar(0,0,0));

Он взят из моего собственного рабочего кода, но некоторые переменные изменились, если он не компилируется, очень вероятно, что нужно изменить только небольшую вещь — но вы поймете идею заново. функция пресса …

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector