1)

#include <iostream>
#include "opencv2/opencv.hpp"

using namespace std;
using namespace cv;

int main()
{
	Mat src = imread("lenna.bmp", IMREAD_GRAYSCALE);

	if (src.empty()) {
		cerr << "Image laod failed!" << endl;
		return -1;
	}

#if 0
	Mat dst = 255 - src;
	//Mat dst;
	dst = src + 50;
#else
	Mat dst(src.rows, src.cols, CV_8UC1);

	for (int y = 0; y < src.rows; ++y) {
		for (int x = 0; x < src.cols; ++x) {
			//int v = src.at<uchar>(y, x) + 50;
			//if (v > 255) v = 255;
			//if (v <= 0) v = 0;
			//3항 연산으로
			/*v = (v > 255) ? 255 : (v < 0) ? 0 : v;
			dst.at<uchar>(y, x) = v;*/

			//opencv 제공함수
			dst.at<uchar>(y, x) = saturate_cast<uchar>(src.at<uchar>(y,x)+50);
			
			


			//dst.at<uchar>(y,x) = src.at<uchar>(y, x) + 50;  //  좌표  y[행], x[렬]
			//포화연산 제대로 적용 x 서 흰색부분이 0으로 됨.
			// src.at<uchar>(y,x)  uchar    50 int 반환, 2개 데이터 계산시 int로 간주하면 dst 픽셀값설정할때 uchar 로 변환되면서 int가 가질수 없는 픽셀값들이 uchar에서 변환이 생김.  
		
		
		}
	}

#endif
	imshow("src", src);
	imshow("dst", dst);
	waitKey();
}

 

 

2) adjmean

#include <iostream>
#include "opencv2/opencv.hpp"

using namespace std;
using namespace cv;

int main(int argc, char* argv[]) // 프로그램내 이미지 파일이름 지정
{
	if (argc < 2) {
		cerr << "Usage: adjmean.exe <filename>" << endl;
		return -1;
	} 

	// 1. argv[1] 영상을 그레이스케일 형태로 불러오기(src)
	Mat src = imread(argv[1], IMREAD_GRAYSCALE); // 사용자가 이미지 파일이름 지정시
	//GRAYSCALE로 불러와 src 행렬에 저장
	if (src.empty()) {
		cerr << "Img load failed!" << endl;
		return -1;
	}

	/*2. 입력 영상의 평균 밝기 구하기*/
	int s = 0;
	for (int y = 0; y < src.rows; ++y) {
		for (int x = 0; x < src.cols; ++x) {
			s += src.at<uchar>(y, x);
		}
	}

	int m = s / (src.rows * src.cols);
	cout << "Mean value: " << m << endl;

	// int m = sum(src)[0]/src.total();
	// int m = mean(src)[0];

	//3. 평균 밝기 128이 되도록 밝기 보정
	Mat dst = src + (128 - m);

	//4. 화면 출력
	imshow("src", src);
	imshow("dst", dst);
	waitKey();

}

 

columbia.bmp
0.22MB
lenna.bmp
0.75MB
tiffany.bmp
0.75MB

 

'프로그래머스 > OPENCV' 카테고리의 다른 글

(4) 히스토그램분석  (0) 2022.12.01
영상의 명암비 조절  (0) 2022.12.01
영상의 밝기 조절(1)  (0) 2022.12.01
2-5 유용한 OpenCV 기능  (0) 2022.12.01
2-4 유용한 OpenCV 함수  (0) 2022.12.01

+ Recent posts