이미지의 밝기를 변경한다는 것은 픽셀 값을 변경하는 것을 의미합니다. 즉, 각 픽셀의 현재 값에 특정 정수 값을 더하거나 빼는 작업입니다. 모든 픽셀에 정수 값을 더하면 이미지가 더 밝아지고, 반대로 일정한 값을 빼면 밝기가 어두워집니다. 이번 글에서는 먼저 밝기를 높이는 방법을 알아보고, 다음으로 밝기를 낮추는 방법을 살펴보겠습니다.
밝기 높이기
OpenCV를 사용해 밝기를 높이는 것은 매우 간단합니다. 각 채널에 추가 값을 더하기만 하면 밝기가 증가합니다. 예를 들어 BGR 이미지는 파랑(B), 초록(G), 빨강(R) 세 개의 채널로 구성되어 있으므로, 하나의 픽셀 값은 (B, G, R) 형태로 표현됩니다. 밝기를 높이려면 여기에 스칼라 값을 더하면 됩니다. 예를 들어 (B, G, R) + (10, 10, 10) 또는 (B, G, R) + (20, 20, 20)처럼 원하는 만큼의 값을 더할 수 있습니다.
다음 예제는 이미지의 밝기를 높이는 방법을 보여줍니다.
예제 코드
#include<iostream>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int main() {
Mat original;//원본 이미지를 불러올 행렬 선언//
Mat brighter;//밝기 변경 후 이미지를 저장할 행렬 선언//
namedWindow("Original");//원본 이미지를 표시할 윈도우 생성//
namedWindow("Brighter");//밝아진 이미지를 표시할 윈도우 생성//
original = imread("bright.jpg");
brighter = original + Scalar(80, 80, 80);//정수 값을 더해 밝기 변경//
imshow("Original", original);//원본 이미지 출력//
imshow("Brighter", brighter);//밝아진 이미지 출력//
waitKey(0);//키 입력 대기//
return(0);
}실행 결과

코드 설명
위 코드에서 핵심은 Scalar(80, 80, 80)입니다. Scalar는 BGR 세 채널 각각에 동일한 값을 더하는 역할을 하며, 여기서는 80이라는 값을 모든 채널에 추가했습니다. 값이 클수록 이미지는 더욱 밝아집니다. 반대로 밝기를 낮추고 싶다면 original - Scalar(50, 50, 50)과 같이 값을 빼주면 됩니다. 단, 픽셀 값은 0~255 범위로 제한되므로 너무 큰 값을 더하거나 빼면 이미지가 하얗게 또는 검게 변할 수 있다는 점에 유의해야 합니다.