상세 컨텐츠

본문 제목

비사실적 렌더링 Non-Photorealistic Rendering - OpenCV

영상처리/OpenCV

by cepiloth 2021. 2. 14. 19:20

본문

728x90
반응형

OpenCV 버전 업데이트 이후 비 사실적 렌더링 효과가 추가 되어 습니다.

 

비사실적 렌더링(非寫實的-, Non-photorealistic rendering, NPR) 이란?

 컴퓨터 그래픽스의 한 영역으로 사실적인 렌더링 이외의 다양한 표현 양식을 다룬다. 사실주의에 초점을 맞추었던 기존의 방식과는 달리, NPR은 회화나 드로잉, 도해, 만화 같은 인공적인 양식에 영향을 받는다. 자주 등장하는 예로 만화 같은 그림을 묘사하는 비디오 게임이나 영화에서 사용하는 툰 셰이딩이 있다.

자세한 내용은 아래 포스팅 참고 하시길 바랍니다.

2018/12/03 - [OpenCV] - 비 사실적 렌더링(Non-photorealistic Rendering, NPR)

 

비 사실적 렌더링(Non-photorealistic Rendering, NPR)

개요  비사실적 렌더링(非寫實的-, Non-photorealistic rendering, NPR)은 컴퓨터 그래픽스의 한 영역으로 사실적인 렌더링 이외의 다양한 표현 양식을 다룬다. 사실주의에 초점을 맞추었던 기존의 방식

overface.tistory.com

#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp>

#include <iostream>
#include <string>

using namespace std;
using namespace cv;

class cvTimerCustom {

public:
    cvTimerCustom(string name) {
        this->name = name;
        tm.start();
    }

    ~cvTimerCustom() {
        tm.stop();
        double average_time = tm.getTimeSec() / tm.getCounter();
        std::cout << name << " - " << "Average time in second per iteration is: " << average_time << std::endl;
    }

private:
    string name;
    TickMeter tm;
};

#define CV_STOPWATCH(arg) cvTimerCustom(arg)


int main() {

    Mat img = imread("image.jpg", IMREAD_COLOR);
    
    if(img.empty()) {
        cout << "internal error." << endl;
        return -1;
    }

    imshow("src", img);


    // pecilSketch Effect
    {
        CV_STOPWATCH("pencilSketch");
        Mat img1, dst;
        pencilSketch(img,img1, dst, 10 , 0.1f, 0.03f);
        imshow("Pencil Sketch",img1);
        imshow("Color Pencil Sketch",dst);
    }
    
    {
        CV_STOPWATCH("edgePreservingFilter");
        Mat edge;
        edgePreservingFilter(img, edge, 1);
        imshow("Edge Preserve Smoothing", edge);
    }

    {
        CV_STOPWATCH("detail");
        Mat detail;
        detailEnhance(img, detail);
        imshow("Detail Enhanced",detail);;
    }

    {
        CV_STOPWATCH("stylization");
        Mat style;
        stylization(img, style);
        imshow("Stylization",style);;
    }


    waitKey(0);
    
    return 0;
}

 

 

 

728x90
반응형

관련글 더보기

댓글 영역