본문 바로가기

OpenCv

cpp opencv 각종 색상의 반전 기법

#include <iostream>
#include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;

int main(int argc, char* argv[])
{

    //"C:\\openCV\\data\\lena.bmp": 이미지 경로
    Mat src = imread("C:\\openCV\\data\\lena.bmp", IMREAD_COLOR);

    if (src.empty()) {
        cout << "Image load failed!\n";
        return -1;
    }

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

    ////픽셀값과 각각의 색상 채널 으로 접근해 색상을 반전
    ////반전시켜서다른메모리에저장
    //for (int r = 0; r < src.rows; r++) {
    //    for (int c = 0; c < src.cols; c++) {
    //        Vec3b& p1 = src.at<Vec3b>(r, c);
    //        Vec3b& p2 = dst.at<Vec3b>(r, c);

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

    ////픽셀값하나로만 접근해 색상을 반전
    ////반전시켜서다른메모리에저장
    //for (int r = 0; r < src.rows; r++) {
    //    for (int c = 0; c < src.cols; c++) {
    //        dst.at<Vec3b>(r, c) = Vec3b(255, 255, 255) - src.at<Vec3b>(r, c);
    //    }
    //}

    //반전시켜서다른메모리에저장
    Mat dst = Scalar(255, 255, 255) - src;

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

    waitKey();
    destroyAllWindows();
}