본문 바로가기

OpenCV

ch05 brightness

#python code

import cv2
import numpy as np

def brightness1():
    src = cv2.imread("D:\\projects\\SampleCode\\006939-master\\ch05\\brightness\\lenna.bmp", cv2.IMREAD_GRAYSCALE)

    if src is None:
        print("Image load failed!")
        return

    dst = np.clip(src.astype(np.int32) + 100, 0, 255).astype(np.uint8)

    cv2.imshow("src", src)
    cv2.imshow("dst", dst)
    cv2.waitKey()

    cv2.destroyAllWindows()

def brightness2():
    src = cv2.imread("D:\\projects\\SampleCode\\006939-master\\ch05\\brightness\\lenna.bmp", cv2.IMREAD_GRAYSCALE)

    if src is None:
        print("Image load failed!")
        return

    dst = np.zeros(src.shape, dtype=np.uint8)

    for j in range(src.shape[0]):
        for i in range(src.shape[1]):
            dst[j, i] = min(src[j, i] + 100, 255)

    cv2.imshow("src", src)
    cv2.imshow("dst", dst)
    cv2.waitKey()

    cv2.destroyAllWindows()

def brightness3():
    src = cv2.imread("D:\\projects\\SampleCode\\006939-master\\ch05\\brightness\\lenna.bmp", cv2.IMREAD_GRAYSCALE)

    if src is None:
        print("Image load failed!")
        return

    dst = cv2.add(src, 100)

    cv2.imshow("src", src)
    cv2.imshow("dst", dst)
    cv2.waitKey()

    cv2.destroyAllWindows()

def on_brightness(pos, userdata):
    src = userdata
    dst = cv2.add(src, pos)

    cv2.imshow("dst", dst)

def brightness4():
    src = cv2.imread("D:\\projects\\SampleCode\\006939-master\\ch05\\brightness\\lenna.bmp", cv2.IMREAD_GRAYSCALE)

    if src is None:
        print("Image load failed!")
        return

    cv2.namedWindow("dst")
    cv2.createTrackbar("Brightness", "dst", 0, 100, lambda pos: on_brightness(pos, src))
    on_brightness(0, src)

    cv2.waitKey()
    cv2.destroyAllWindows()

def main():
    brightness1()
    brightness2()
    brightness3()
    brightness4()

if __name__ == "__main__":
    main()

// C++ code


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

using namespace cv;
using namespace std;

void brightness1();
void brightness2();
void brightness3();
void brightness4();
void on_brightness(int pos, void* userdata);

int main(void)
{
	brightness1();
	brightness2();
	brightness3();
	brightness4();

	return 0;
}

void brightness1()
{
	Mat src = imread("lenna.bmp", IMREAD_GRAYSCALE);

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

	Mat dst = src + 100;

	imshow("src", src);
	imshow("dst", dst);
	waitKey();

	destroyAllWindows();
}

void brightness2()
{
	Mat src = imread("lenna.bmp", IMREAD_GRAYSCALE);

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

	Mat dst(src.rows, src.cols, src.type());

	for (int j = 0; j < src.rows; j++) {
		for (int i = 0; i < src.cols; i++) {
			dst.at<uchar>(j, i) = src.at<uchar>(j, i) + 100;
		}
	}

	imshow("src", src);
	imshow("dst", dst);
	waitKey();

	destroyAllWindows();
}

void brightness3()
{
	Mat src = imread("lenna.bmp", IMREAD_GRAYSCALE);

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

	Mat dst(src.rows, src.cols, src.type());

	for (int j = 0; j < src.rows; j++) {
		for (int i = 0; i < src.cols; i++) {
			dst.at<uchar>(j, i) = saturate_cast<uchar>(src.at<uchar>(j, i) + 100);
		}
	}

	imshow("src", src);
	imshow("dst", dst);
	waitKey();

	destroyAllWindows();
}

void brightness4()
{
	Mat src = imread("lenna.bmp", IMREAD_GRAYSCALE);

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

	namedWindow("dst");
	createTrackbar("Brightness", "dst", 0, 100, on_brightness, (void*)&src);
	on_brightness(0, (void*)&src);

	waitKey();
	destroyAllWindows();
}

void on_brightness(int pos, void* userdata)
{
	Mat src = *(Mat*)userdata;
	Mat dst = src + pos;

	imshow("dst", dst);
}

C++ Code 출처 : OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝 - 황선규 저


'OpenCV' 카테고리의 다른 글

ch06 arithmetic  (0) 2024.05.20
ch05 contrast  (0) 2024.05.19
ch04 video  (0) 2024.05.19
ch04 utils  (0) 2024.05.19
ch04 trackbar  (0) 2024.05.19