opencv에서 제공하는 연산자 오버로딩 이용해 이미지 밝기값 조절

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

using namespace std;
using namespace cv;

void ex01() {
	Mat img[4];
	Mat img1 = imread("lenna.bmp", IMREAD_GRAYSCALE);
	int rows = img1.rows;
	int cols = img1.cols;

	Mat img2(rows, cols, CV_8UC1);
	Mat img3 = imread("lenna.bmp", IMREAD_COLOR);
	Mat img4;

	cvtColor(img3, img4, COLOR_BGR2GRAY);
	img1.copyTo(img[0]);
	img2.copyTo(img[1]);
	img3.copyTo(img[2]);
	img4.copyTo(img[3]);

	for (int x = 0; x < 4; ++x) {
		string str = format("img%d", x);
		imshow(str, img[x]);
		waitKey();
	}
}
int main()
{
	ex01();
	
}

 

 

2) Brighteness  and inverse

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

using namespace std;
using namespace cv;

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

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

	Mat dst = src - 150; // opencv 내부적으로 150은 Scalar(150)으로 재정의 됨  // 255 넘으면 255로   0보다 밑이면 0으로 한정 짓는 연산을 saturate연산(포화연산) 또는 limit연산이라 한다. 
	Mat dst2;
	add(src, -150, dst2);  // opencv add함수이용해 brightness 변경 가능
	imshow("src", src);
	imshow("dst", dst);
	imshow("dst2", dst2);
	waitKey();
	
	return 1;
}

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

	Mat dst = 255 - src;
	if (src.empty()) {
		cerr << "Image laod failed!" << endl;
		return -1;
	}
	imshow("src", src);
	imshow("dst", dst);
	waitKey();

	return 1;
}
int main()
{
	//brightness();
	inverse();
}

 

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

영상의 명암비 조절  (0) 2022.12.01
영상의 밝기조절(2)  (3) 2022.12.01
2-5 유용한 OpenCV 기능  (0) 2022.12.01
2-4 유용한 OpenCV 함수  (0) 2022.12.01
2-3 OpenCV 이벤트 처리하기.  (0) 2022.11.30

+ Recent posts