首页 > 编程 > C > 正文

OpenCV实现彩色照片转换成素描卡通片

2020-01-26 13:34:20
字体:
来源:转载
供稿:网友

本文实例为大家分享了OpenCV实现彩色照片转换成素描卡通片的具体代码,供大家参考,具体内容如下

#include"stdafx.h"//#include<cv.h>//#include<highgui.h> #include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/core/core.hpp>using namespace cv;using namespace std;  int main(){ Mat src,smallImg,tmp,bigImg,gray,edges,masks,dst;  const int MEDIAN_BLUR_FILTER_SIZE = 7;  const int LAPLACIAN_FILTER_SIZE = 5;  const int EDGES_THRESHOLD = 80;  int repetitions = 7; // Repetitions for strong cartoon effect.   src = imread("pic.jpg");  Size size = src.size();  Size smallSize;  smallSize.width = size.width/2;  smallSize.height = size.height/2;  smallImg = Mat(smallSize, CV_8UC3);  tmp = Mat(smallSize, CV_8UC3);  dst= Mat(size,CV_8UC3);   cvtColor(src,gray,CV_BGR2GRAY);   medianBlur(gray,gray,MEDIAN_BLUR_FILTER_SIZE);   Laplacian(gray, edges, CV_8U,LAPLACIAN_FILTER_SIZE);   threshold(edges, masks,EDGES_THRESHOLD,255, THRESH_BINARY_INV);  imshow("sketch:)", masks);  waitKey(10);  resize(src, smallImg, smallSize, 0,0, INTER_LINEAR);  for (int i=0; i<repetitions; i++)  {  int ksize = 9; // Filter size. Has a large effect on speed.  double sigmaColor = 9; // Filter color strength.  double sigmaSpace = 7; // Spatial strength. Affects speed.  bilateralFilter(smallImg, tmp, ksize, sigmaColor, sigmaSpace);  bilateralFilter(tmp, smallImg, ksize, sigmaColor, sigmaSpace);  }  resize(smallImg, bigImg, size, 0,0, INTER_LINEAR);  bigImg.copyTo(dst,masks);   imshow("cartoon :)", dst);  waitKey(0); return 0;}

原图、素描图、卡通图效果依次为:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选