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 |