코코야이야기
[c++] OpenCV 두이미지합성2 본문
소스코드
//두이미지 합치기 , 함수사용x, 두이미지의 크기가 같아야만 가능
#include <highgui.h>
#include <cv.h>
void main()
{
IplImage *sum_image=0, *image1=0, *image2=0;
uchar *sum_data, *data1, *data2;
int height1, width1, channels1;
int i, j;
//이미지 생성
image1=cvLoadImage("배경.jpg", -1);
image2=cvLoadImage("test.jpg", -1);
sum_image = cvCreateImage( cvGetSize(image1), 8, 3);
//데이터 정보 저장
data1 = (uchar *)image1->imageData;
data2 = (uchar *)image2->imageData;
sum_data = (uchar *)sum_image->imageData;
height1 = image1->height;
width1 = image1->width;
channels1 = image1->nChannels;
//영상 더하기
for(i=0;i<height1*channels1;i++)
{
for(j=0;j<width1;j++)
{
if(data1[i*width1 + j] + data2[i*width1 + j]<=255)
sum_data[i*width1 + j] = data1[i*width1 + j] + data2[i*width1 + j];
else
sum_data[i*width1 + j]=255;
}
}
//두 영상의 픽셀의 더한값이 255를 넘어갈 경우 최대값이 255이 되도록 만들어야 오류가 발생하지 않음. 8비트(0~255)로 데이터를 표시하고 있기때문에 그이상이 되면 안됨.
cvNamedWindow("Image 1", CV_WINDOW_AUTOSIZE);
cvNamedWindow("Image 2", CV_WINDOW_AUTOSIZE);
cvNamedWindow("Sum Image", CV_WINDOW_AUTOSIZE);
cvShowImage("Image 1", image1);
cvShowImage("Image 2", image2);
cvShowImage("Sum Image", sum_image);
cvWaitKey(0);
cvReleaseImage(&image1);
cvReleaseImage(&image2);
cvReleaseImage(&sum_image);
}
출력영상
'프로그래밍 > OpenCV' 카테고리의 다른 글
[c++] OpenCV 도형그리기2 (0) | 2015.07.04 |
---|---|
[c++] OpenCV 도형그리기1 (0) | 2015.07.04 |
[c++] OpenCV 두이미지합성1 (0) | 2015.07.02 |
[c++] OpenCV 사진명암조절2 (0) | 2015.07.01 |
[c++] OpenCV 사진명암조절1 (0) | 2015.06.30 |