관리 메뉴

코코야이야기

[c++] OpenCV 사진흑백변환1 본문

프로그래밍/OpenCV

[c++] OpenCV 사진흑백변환1

코코야 2015. 6. 29. 14:00
반응형

소스코드

//사진 픽셀에 접근해서 컬러사진을 흑백으로 변환, 공식 : 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
Comments