코코야이야기
[c++] OpenCV 사진흑백변환1 본문
소스코드
//사진 픽셀에 접근해서 컬러사진을 흑백으로 변환, 공식 : i = 0.114 x B + 0.587 x G + 0.299 x R
#include <highgui.h>
#include <cv.h>
#include <stdio.h>
void main()
{
IplImage* image=0, *N_image=0;
int N_height, N_width, intensity, N_channels; //intensity : 원본영상에서 컬러 데이터값들을 흑백데이터값으로 바꾼값을 저장하는 변수
int i,j,k;
uchar* data,* N_data;
image=cvLoadImage("night.jpg",-1);
data = (uchar*)image->imageData;
N_image=cvLoadImage("night.jpg",-1);
N_height = N_image->height;
N_width = N_image->width;
N_channels = N_image->nChannels;
N_data = (uchar*)N_image->imageData;
for(i=0;i<N_height;i++)
for(j=0;j<N_width;j++)
{
intensity=(int)(0.114 * data[i*N_width*N_channels + j*N_channels +0]
+ 0.587 * data[i*N_width*N_channels + j*N_channels +1]
+ 0.299 * data[i*N_width*N_channels + j*N_channels +2]);
for(k=0;k<N_channels;k++)
N_data[i*N_width*N_channels + j*N_channels +k] = intensity;
}
for(i=0;i<1000;i+=100)
for(k=0;k<3;k++)
printf("imageData[%3d] = %d \t N_imageData[%3d] = %d\n",i+k,data[i+k],i+k,N_data[i+k]);
cvNamedWindow("Night", CV_WINDOW_AUTOSIZE);
cvShowImage("Night", image);
cvNamedWindow("B_Night", CV_WINDOW_AUTOSIZE);
cvShowImage("B_Night", N_image);
cvWaitKey(0);
cvReleaseImage(&image);
cvReleaseImage(&N_image);
}
출력영상
'프로그래밍 > OpenCV' 카테고리의 다른 글
[c++] OpenCV 두이미지합성1 (0) | 2015.07.02 |
---|---|
[c++] OpenCV 사진명암조절2 (0) | 2015.07.01 |
[c++] OpenCV 사진명암조절1 (0) | 2015.06.30 |
[c++] OpenCV 사진정보출력 (0) | 2015.06.27 |
[c++] OpenCV 사진출력 (0) | 2015.06.27 |