OpenCV에서 유화 효과는 한 줄로 거는 것입니다. (C++ 한정)

배경



opencv-contrib-python 에는 비교적 최근에 작성된 패키지나 라이브러리가 여기에 github 경유로 커밋되고 있습니다. contrib은 contribute: 기부라는 의미다. (영어 서투른 )
거기에서, 재미있을 것 같은 것은 없을까 찾고 있으면 xphoto::oilPainting (유화 이펙트) 메소드를 발견했습니다. 아마도이 메소드는 아직 Python이 아니며 C++에만 현재 존재하는 것 같습니다.

개발



makefile



Mac 환경에서 OpenCV를 makefile로 컴파일하는 방법 에 있는 makefile 을 조금 수정합니다.
CXX = c++
CXXFLAGS =  -I/usr/local/Cellar/opencv/4.1.1_2/include/opencv4/
LDFLAGS = -L/usr/local/Cellar/opencv/4.1.1_2/lib/
LDLIBS =  -lopencv_core -lopencv_highgui -lopencv_imgcodecs -lopencv_xphoto
CXXVERSION = -std=c++11

paint: paint.cpp
    $(CXX) $< -o $@ $(CXXFLAGS) $(CXXVERSION) $(LDFLAGS) $(LDLIBS)

clean :
    rm paint

이번 유화 효과 방법을 사용하려면 opencv_xphoto가 필요하므로 라이브러리 파일을 추가합니다.

cpp


#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/xphoto.hpp>

int main(int argc, const char* argv[]) {
    cv::Mat src = cv::imread("./mikan.jpg");
    cv::Mat dst;

    if (src.empty()) {
        std::cout << "read error.\n";
        return -1;
    }

    cv::xphoto::oilPainting(src, dst, 10, 1, cv::COLOR_BGR2Lab);

    cv::namedWindow("oil painting effect", cv::WINDOW_AUTOSIZE);
    cv::imshow("oil painting effect", dst);
    cv::waitKey(0);
    cv::destroyAllWindows();

   return 0;
}

포함 또한 #include <opencv2/xphoto.hpp> 와 선언을 추가합니다.

결과



소스 이미지 (1)



평소와 같이 귤 성인 입니다.


Processed (그 1)





그렇게 유화가 되었습니다.
눈썹 짙은입니다. (원래부터)

소스 이미지 (2)



Instagram 하시모토 칸나(아마 공식) 에 있던 최신 게시물 이미지를 사용해보십시오.


Processed (그 2)


xphoto::oilPainting 의 세 번째 인수를 10 -> 5 로 하고 있습니다. 아마 붓의 두께와 동의일 것입니다. 낮게 설정하지 않으면 얼굴 윤곽이 표시되기 어려워집니다.


요약



opencv가 4계가 되어 꽤 모듈 메소드가 늘어났다.
지금까지 사용하지 않은 메소드를 찾는 것은 나중에 사용하려고 생각했을 때 도움이 될 것입니다.

도움이 될 것 같은 링크


  • 오일 페인팅 효과
  • oilPainting()
  • 좋은 웹페이지 즐겨찾기