컬러 이미지를 흑백 이미지로 변환하기
c++)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #include <opencv/cv.h> #include <opencv/highgui.h> void main() { IplImage *image; image = cvLoadImage("D:/study/testimage.jpg", -1); //이미지 로드 int height = image->height; //이미지 높이 int width = image->width; //이미지 너비 int channels = image->nChannels; //이미지 채널 uchar* data = (uchar*)image->imageData; //이미지 픽셀데이터 //컬러영상 -> 흑백영상으로 변환 //공식 흑백영상 = 0.333*B + 0.333*G + 0.333*R for (int h = 0; h < height; h++) { for (int w = 0; w < width; w++) { double blue = 0.333*data[h*width*channels + w*channels + 0]; double green = 0.333*data[h*width*channels + w*channels + 1]; double red = 0.333*data[h*width*channels + w*channels + 2]; int intensity = (int)(blue + green + red); //각채널의 평균값 for (int c = 0; c < channels; c++) { data[h*width*channels + w*channels + c] = intensity; } } } cvNamedWindow("image", CV_WINDOW_AUTOSIZE); //윈도우 생성 cvShowImage("image", image); //윈도우에 이미지 표시 cvWaitKey(0); cvReleaseImage(&image); } | cs |
결과
'IT > - 프로그래밍' 카테고리의 다른 글
OpenCV 이미지를 선명하게 하기(cvMul 함수) (0) | 2017.04.07 |
---|---|
OpenCV 이미지를 밝게, 어둡게하기 (0) | 2017.04.06 |
OpenCV 이미지 가운데에 흰색 선긋기 예제 (0) | 2017.04.04 |
OpenCV 윈도우에 출력한 영상을 이미지 파일로 저장하기 (0) | 2017.04.03 |
OpenCV 3채널 영상을 1채널 영상으로 분리하여 영상 출력예제 (0) | 2017.04.02 |