OpenCV: как объединить два статических изображения в одно и нанести на него текст? - PullRequest
2 голосов
/ 03 августа 2010

Я выполнил алгоритм обработки изображений, в котором извлекаю определенные функции из двух похожих изображений.

Я использую OpenCV2.1 и хочу продемонстрировать сравнение этих двух похожих изображений. Я хочу объединить оба изображения в одно , где на конечном изображении будут оба изображения рядом друг с другом. Как на рисунке ниже. альтернативный текст http://img841.imageshack.us/img841/3718/29541068.jpg

Кроме того, черные точки - это сходство, которое наш алгоритм нашел, теперь я хочу пометить их цифрами. Где точка 1 справа - это соответствующая точка совпадения слева. **

Какие функции OpenCV полезны для этой работы?

Ответы [ 2 ]

4 голосов
/ 04 июля 2011

Если вы действительно хотите, чтобы они были в одном и том же окне, и предполагая, что они имеют одинаковую ширину и высоту (если они похожи, они должны иметь одинаковую ширину и высоту) Вы можете попытаться создать изображение с окончательной шириной, вдвое превышающей ширину ваших 2 похожих изображений. А затем используйте ROI, чтобы скопировать их. Вы можете написать новую функцию для инкапсуляции этих (полезных) функций в одну функцию, чтобы получить хороший код.

Mat img1,img2; //They are previously declared and of the same width & height

Mat imgResult(img1.rows,2*img1.cols,img1.type()); // Your final image

Mat roiImgResult_Left = imgResult(Rect(0,0,img1.cols,img1.rows)); //Img1 will be on the left part
Mat roiImgResult_Right = imgResult(Rect(img1.cols,0,img2.cols,img2.rows)); //Img2 will be on the right part, we shift the roi of img1.cols on the right

Mat roiImg1 = img1(Rect(0,0,img1.cols,img1.rows));
Mat roiImg2 = img2(Rect(0,0,img2.cols,img2.rows));

roiImg1.copyTo(roiImgResult_Left); //Img1 will be on the left of imgResult
roiImg2.copyTo(roiImgResult_Right); //Img2 will be on the right of imgResult

Julien

1 голос
/ 03 августа 2010

Самым простым способом, который я могу себе представить, было бы создание двух окон вместо одного. Вы можете сделать это с помощью cvNamedWindow (), а затем расположить их рядом с cvMoveWindow ().

После этого, если вы теперь располагаете сходство на изображениях, вы можете нарисовать свой текст рядом с ними. Посмотрите на cvInitFont (), cvPutText ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...