2012-06-22 2 views
0

Каков наилучший способ сделать размер коробки 2 равным Box 1, чтобы CvCopy(); могут быть применены:OpenCV: Объединение двух изображений с использованием OpenCV

enter image description here

EDIT:

Может быть, я не ставил вопрос правильно. Поэтому я перефразирую его. Дано изображение 2 (как показано выше), я хочу, чтобы преобразовать его, как показано ниже:
enter image description here

В основном я должен добавить черную рамку через него. изменение размера не будет работать, так как мое изображение будет искажено. Другими словами, я должен добавить нули в определении тикности вокруг изображения.

Также, хотя они показаны пустыми, эти изображения (коробки) могут иметь внутри себя некоторые объекты, которые я не показывал.

+1

Что такое коробка и что не так с изменением размера функционировать? 'http: // opencv.willowgarage.com/documentation/python/imgproc_geometric_image_transformations.html # resize' –

+1

Неправильно искажение – gpuguy

+0

Что относительно ROI? –

ответ

1

Вы можете использовать функцию copyMakeBorder для этого. Я не знаю dotnet, ниже пример кода в python. Также посетите документы для вышеуказанной функции: DOCS

Сначала загрузите два изображения. imb - большое изображение, а ims - это небольшое изображение.

import cv2 
import numpy as np 

imb = cv2.imread('messi4.jpg') 
ims = cv2.imread('template.jpg') 

Теперь rb,cb быть число строк и столбцов большого изображения, а так же rs,cs для небольшого изображения.

rb,cb = imb.shape[:2] 
rs,cs = ims.shape[:2] 

Наконец, чтобы использовать функцию copyMakeBorder, необходимо количество строк и столбцов, которые будут добавлены сверху, снизу, слева и справа. Поэтому нам нужно их найти.

top = (rb-rs)/2 
bottom = rb - rs - top 
left = (cb-cs)/2 
right = cb - cs - left 

Наконец, примените функцию.

res = cv2.copyMakeBorder(ims,top,bottom,left,right,cv2.BORDER_CONSTANT) 

Теперь увидеть результаты:

Оригинал Small Image:

enter image description here

Модифицированный New Image:

enter image description here

Он имеет тот же размер, что и у моего большого изображения (здесь не показано, думал, что это не понадобится, если вы хотите, я могу загрузить)

0

Расширение более мелкого не было бы лучшей идеей, так как вы получите много искажений изображения - скорее, было бы лучше сжать большую, если окончательный размер не является проблемой.

Вы можете изменить размер изображений с помощью cv::resize() (это функция C++ - я не использовал OpenCV dot net).

Сведения об осуществлении: in the API.

С точки зрения слияния, это зависит от вашего определения, но просто используя cv::copy() этого не сделает. Есть полный учебник по слиянию изображений in the documentation, here.

+0

Вы прочитали ссылку, которую вы мне прислали? , он говорит: «Предупреждение: поскольку мы добавляем src1 и src2, они оба должны иметь одинаковый размер (ширина и высота) и тип». Кроме того, размер для меня бесполезен, поскольку он искажает изображение. – gpuguy

+0

Мне это известно. Ваш оригинальный вопрос подразумевал, что вы хотите изменить размер одного до того же размера, что и другой, а затем слить. – n00dle

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

  • Нет связанных вопросов^_^