2010-08-11 3 views
2

Opencv를 사용하여 서로 다른 크기의 두 이미지를 정렬하려고합니다. 실제로 cvAddWeighted 함수를 사용하면 동일하지 않은 크기 인 이미지를 결합하거나 블렌드 할 수 있습니다! 누군가가 이미지두 이미지를 Opencv로 블렌딩

감사 y.m

+0

하나의 이미지를 재배 율화하여 다른 이미지와 동일한 느낌을 유지 하시겠습니까? – karlphillip

답변

5

먼저, Adding Two Images with Different Size을 확인하기위한 다른 크기를 고려 으로이 기능을 구현하는 방법을 알고 있다면 그래서 나는 도움이 필요합니다.

또 다른 방법은 작은 이미지의 너비/높이를 사용하여 더 큰 이미지에 관심이있는 영역을 설정하고 (cvSetImageROI()가이를 수행함) cvAddWeighted()를 사용하여 블렌드를 수행하는 것입니다. 이를위한 소스 코드와 here을 찾을 수 있습니다.

2

두 이미지가 정렬되어 있어야합니다. 또한 한 이미지의 위치를 ​​바꿀 필요가 있습니다.

옮겨 놓은 후에 두 이미지를 모두 포함 할 수있는 새 이미지를 만들 수 있습니다. 이것은 원본 이미지의 높이 + 수직 변위이고 너비는 원래 * 2 - 수평 변위의 너비가됨을 의미합니다.

그런 다음이 이미지에 ROI를 설정하고 이미지를 복사 할 수 있습니다.

+1

+1 나는 Aishack의 팬이다 .... 나는 그로부터 많은 것을 배웠다. 나는 3d의 머리를 회전시키는 법을 얻을 수 있는가? 3 각도를 알아야한다. – Wazzzy

0

Rect (0, 0, img.rows, img.cols)를 반환하는 Rect_from_Mat 함수를 작성합니다. 그런 다음

다음 'addWeighted'선 (간접적으로)을 img1로의 이미지 데이터를 덮어 씌 웁니다

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; 
} 

참고.