смешивание двух изображений от Opencv - PullRequest
2 голосов
/ 11 августа 2010

Я хочу выровнять два изображения разных размеров, используя Opencv. Действительно, функция cvAddWeighted позволяет нам комбинировать или смешивать два изображения одинакового размера, что не в моем случае!поэтому мне нужна помощь, если кто-то знает, как реализовать эту функцию с учетом различных размеров для изображений

спасибо ym

Ответы [ 3 ]

5 голосов
/ 11 августа 2010

Первый , отметьте Добавление двух изображений разного размера .

Другой способ сделать это - установить область интереса для большего изображения, используя ширину / высоту меньшего (cvSetImageROI () сделает это), а затем выполнить смешивание с помощью cvAddWeighted (). Вы найдете некоторый исходный код для этого и здесь .

2 голосов
/ 16 августа 2010

Полагаю, у вас есть два изображения, которые необходимо выровнять.У вас также будет сумма, на которую необходимо сместить одно изображение.

Вы можете создать новое изображение, которое может содержать оба изображения после смещения.Это означает, что это будет высота исходного изображения + вертикальное смещение, а его ширина будет шириной исходного * 2-горизонтального смещения.

Затем вы можете установить области интереса для этого изображения и копировать изображения.

0 голосов
/ 29 октября 2012

Вы пишете функцию Rect_from_Mat, которая возвращает Rect (0, 0, img.rows, img.cols).

Затем:

Rect roi = Rect_from_Mat(img1) & Rect_from_Mat(img2);

Mat img1_roi = img1(roi), img2_roi = img2(roi);
if(results_in_img1)
{
  addWeighted(img1_roi, alpha, img2_roi, beta, gamma, img1_roi);
  return img1;
}

Обратите внимание, что строка addWeighted будет(косвенно) перезаписать данные изображения img1.

...