본문 바로가기

OpenCV

ch10 colorOp

#python

import cv2
import numpy as np

def color_op():
    img = cv2.imread("D:\\projects\\SampleCode\\006939-master\\ch10\\ColorOp\\butterfly.jpg", cv2.IMREAD_COLOR)

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

    pixel = img[0, 0]
    b1, g1, r1 = pixel[0], pixel[1], pixel[2]

    ptr = img[0]
    b2, g2, r2 = ptr[0][0], ptr[0][1], ptr[0][2]

def color_inverse():
    src = cv2.imread("D:\\projects\\SampleCode\\006939-master\\ch10\\ColorOp\\butterfly.jpg", cv2.IMREAD_COLOR)

    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]):
            p1 = src[j, i]
            p2 = dst[j, i]

            p2[0] = 255 - p1[0]  # B
            p2[1] = 255 - p1[1]  # G
            p2[2] = 255 - p1[2]  # R

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

def color_grayscale():
    src = cv2.imread("D:\\projects\\SampleCode\\006939-master\\ch10\\ColorOp\\butterfly.jpg")

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

    dst = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)

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

def color_split():
    src = cv2.imread("D:\\projects\\SampleCode\\006939-master\\ch10\\ColorOp\\candies.png")

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

    bgr_planes = cv2.split(src)

    cv2.imshow("src", src)
    cv2.imshow("B_plane", bgr_planes[0])
    cv2.imshow("G_plane", bgr_planes[1])
    cv2.imshow("R_plane", bgr_planes[2])
    cv2.waitKey()
    cv2.destroyAllWindows()

def main():
    color_op()
    color_inverse()
    color_grayscale()
    color_split()

if __name__ == "__main__":
    main()

// C++

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

using namespace cv;
using namespace std;

void color_op();
void color_inverse();
void color_grayscale();
void color_split();

int main(void)
{
	color_op();
	color_inverse();
	color_grayscale();
	color_split();

	return 0;
}

void color_op()
{
	Mat img = imread("butterfly.jpg", IMREAD_COLOR);

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

	Vec3b& pixel = img.at<Vec3b>(0, 0);
	uchar b1 = pixel[0];
	uchar g1 = pixel[1];
	uchar r1 = pixel[2];

	Vec3b* ptr = img.ptr<Vec3b>(0);
	uchar b2 = ptr[0][0];
	uchar g2 = ptr[0][1];
	uchar r2 = ptr[0][2];
}

void color_inverse()
{
	Mat src = imread("butterfly.jpg", IMREAD_COLOR);

	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++) {
			Vec3b& p1 = src.at<Vec3b>(j, i);
			Vec3b& p2 = dst.at<Vec3b>(j, i);

			p2[0] = 255 - p1[0]; // B
			p2[1] = 255 - p1[1]; // G
			p2[2] = 255 - p1[2]; // R
		}
	}

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

	waitKey();
	destroyAllWindows();
}

void color_grayscale()
{
	Mat src = imread("butterfly.jpg");

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

	Mat dst;
	cvtColor(src, dst, COLOR_BGR2GRAY);

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

	waitKey();
	destroyAllWindows();
}

void color_split()
{
	Mat src = imread("candies.png");

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

	vector<Mat> bgr_planes;
	split(src, bgr_planes);

	imshow("src", src);
	imshow("B_plane", bgr_planes[0]);
	imshow("G_plane", bgr_planes[1]);
	imshow("R_plane", bgr_planes[2]);

	waitKey();
	destroyAllWindows();
}

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


'OpenCV' 카테고리의 다른 글

ch11 adaptive  (0) 2024.05.21
ch10 inrange  (0) 2024.05.21
ch10 coloreq  (0) 2024.05.21
ch10 backproj  (0) 2024.05.21
ch09 hough  (0) 2024.05.20