copy — способы копирования изображения в повернутый прямоугольник opencv Stack Overflow

Я работаю на Win7 x64, с openCV и Visual Studio 2010, программирую на c ++.
Я хочу скопировать изображение (назовите это образ) в прямоугольную область другого изображения (назовите его RR_image). Эта область, однако, вращается.

здесь образ:

введите описание изображения здесь

и вот RR_image:
введите описание изображения здесь
(как вы видите, я уже повернул первое изображение)

Я бы скопировал первое изображение в красный прямоугольник.

Сколько и как можно это сделать?

Я знаю о ROI и: img1.copyTo(img2.rowRange(...), img2.colRange(...));

Спасибо!

4

Решение

Основная проблема заключается в том, что OpenCV не поддерживает прозрачность в изображениях, что вам нужно, чтобы выполнить эту задачу простым способом.

Таким образом, один из способов сделать это — написать собственную функцию / метод для перебора повернутого (исходного) изображения, копируя пиксели в целевое изображение, игнорируя при этом пиксели фона (например, определенный оттенок серого). Однако этот подход очень ограничен.

РЕДАКТИРОВАТЬ:

OpenGL, безусловно, может справиться с этой задачей, но он несет в себе сложность, о которой вы, вероятно, не хотите, чтобы вы знали. К счастью, есть и другие альтернативы, такие как ImakeMagick, который предоставляет API C ++ через ImageMagick ++ и он, безусловно, может обрабатывать прозрачные изображения. Взгляни на Нежное Введение в Магию ++.

QImage класс из Qt может наверное сделай это тоже.

2

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

Я решил свою проблему с библиотекой Qt и OpenCV.

Вот как:

Дано образ а также RR_image чтобы скопировать первое в второе, я использовал этот код:

QPainter painter(&RR_image);
painter.drawImage( (float)p1.x(),(float)p2.y(), image);

RR_image а также образ должен быть объектом QImage, поэтому я должен преобразовать их из Mat в QImage с помощью этого кода:

cvtColor(image, image,CV_BGR2RGB);
QImage image= QImage((uchar*) image.data, image.cols, image.rows, image.step, QImage::Format_RGB888);

Результат:
введите описание изображения здесь

Надеюсь, это поможет кому-то!

2

По вопросам рекламы [email protected]