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계가 되어 꽤 모듈 메소드가 늘어났다.
지금까지 사용하지 않은 메소드를 찾는 것은 나중에 사용하려고 생각했을 때 도움이 될 것입니다.
도움이 될 것 같은 링크
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계가 되어 꽤 모듈 메소드가 늘어났다.
지금까지 사용하지 않은 메소드를 찾는 것은 나중에 사용하려고 생각했을 때 도움이 될 것입니다.
도움이 될 것 같은 링크
opencv가 4계가 되어 꽤 모듈 메소드가 늘어났다.
지금까지 사용하지 않은 메소드를 찾는 것은 나중에 사용하려고 생각했을 때 도움이 될 것입니다.
도움이 될 것 같은 링크
Reference
이 문제에 관하여(OpenCV에서 유화 효과는 한 줄로 거는 것입니다. (C++ 한정)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/satsukiya/items/8adc069772df7465bd85텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)