闲的时候用OpenCV画漫画也挺有意思,虽然效果不好(达不到上面所实现的效果),

参数需要调整,还是大头贴而且噪声小的图像比较合适

而且可以熟悉一下关于各种滤波的操作比如:双边滤波

  1. #include "cv.h"
  2. #include "highgui.h"
  3. using namespace cv;
  4. using namespace std;
  5. int main()
  6. {
  7. string name="D:/cartoon0.jpg";
  8. Mat src1=imread(name,1);
  9. Mat img;
  10. //双边滤波,第3个参数d可以说d>5时不能实时处理,最后两个参数是sigma参数,一般相同,
  11. //<10时基本没效果, >150时漫画效果
  12. bilateralFilter(src1,img,5,150,150);
  13. bilateralFilter(img,src1,5,150,150);
  14. //img.copyTo(src1);
  15. imshow("bilateral",src1);
  16. waitKey(0);
  17. Mat src;
  18. cvtColor(src1,src,CV_BGR2GRAY);
  19. //粗线,越大越粗,但是会有大量噪点
  20. Mat imgL;
  21. //第三个参数ddepth表示目标图像的深度,ddepth=-1时,与原图像一致
  22. Laplacian(src,imgL,-1,3,1);
  23. imshow("Laplacian",imgL);
  24. waitKey(0);
  25. //细线
  26. Mat imgC;
  27. Canny(src,imgC,30,90);
  28. imshow("Canny",imgC);
  29. waitKey(0);
  30. Mat imgS,imgSx,imgSy,imgS0;
  31. Sobel(src,imgSx,-1,0,1);
  32. Sobel(src,imgSx,-1,1,0);
  33. imgS=imgSx+imgSy;
  34. Sobel(src,imgS0,-1,1,1);
  35. imshow("Sobel0",imgS0);
  36. imshow("Sobel",imgS);
  37. waitKey(0);
  38. Mat imgTotal;
  39. imgTotal=imgC+imgS+imgL;
  40. //imgTotal.convertTo(imgTotal,CV_32FC1);
  41. normalize(imgTotal,imgTotal,255,0,CV_MINMAX);
  42. GaussianBlur(imgTotal,imgTotal,Size(3,3),3);
  43. threshold(imgTotal,imgTotal,100,255,THRESH_BINARY_INV);
  44. imshow("Total",imgTotal);
  45. waitKey(0);
  46. Mat imgTotalC3;
  47. cvtColor(imgTotal,imgTotalC3,CV_GRAY2BGR);
  48. bitwise_and(src1,imgTotalC3,src1);
  49. imshow("Result",src1);
  50. waitKey(0);
  51. name.insert(11,"_edge");
  52. imwrite(name,src1);
  53. /*
  54. Mat img(imgTotal.rows,imgTotal.cols,CV_32FC1);
  55. for(int i=0;i<imgTotal.rows;i++)
  56. {
  57. //uchar* p=(uchar*)(imgTotal.ptr()+i*imgTotal.step);
  58. for(int j=0;j<imgTotal.cols;j++)
  59. {
  60. if(imgTotal.at<float>(i,j)==0)
  61. img.at<float>(i,j)=1;
  62. }
  63. }
  64. imshow("Reverse",img);
  65. waitKey(0);
  66. */
  67. /*
  68. Mat imgSc;
  69. Scharr(src,imgSc,-1,1,0);
  70. imshow("Scharr",imgSc);
  71. waitKey(0);
  72. */
  73. }

from: http://blog.csdn.net/yangtrees/article/details/7544481

学习OpenCV——用OpenCv画漫画的更多相关文章

  1. 基础学习笔记之opencv(6):实现将图片生成视频

    基础学习笔记之opencv(6):实现将图片生成视频 在做实验的过程中.难免会读视频中的图片用来处理,相反将处理好的图片又整理输出为一个视频文件也是非经常常使用的. 以下就来讲讲基于opencv的C+ ...

  2. [OpenCV学习笔记1][OpenCV基本数据类型]

    CvPoint基于二维整形坐标轴的点typedef struct CvPoint{int x; /* X 坐标, 通常以 0 为基点 */int y; /* y 坐标,通常以 0 为基点 */}CvP ...

  3. 【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0 +VS 2013 开发环境配置

    图片太多,具体过程参照: [OpenCV入门教程之一] 安装OpenCV:OpenCV 3.0.OpenCV 2.4.8.OpenCV 2.4.9 +VS 开发环境配置 说下我这边的设置: 选择deb ...

  4. [OpenCV] Install OpenCV 3.3 with DNN

    OpenCV 3.3 Aug 3, 2017 OpenCV 3.3 has been released with greatly improved Deep Learning module and l ...

  5. 用python做数字油画或者从一幅画学习风格,去画另一幅画

    1. 用python做数字油画 模块: pillow 2. 从一幅画学习风格,去画另一幅画 http://pytorch.org/tutorials/advanced/neural_style_tut ...

  6. Opencv学习之路—Opencv下基于HOG特征的KNN算法分类训练

    在计算机视觉研究当中,HOG算法和LBP算法算是基础算法,但是却十分重要.后期很多图像特征提取的算法都是基于HOG和LBP,所以了解和掌握HOG,是学习计算机视觉的前提和基础. HOG算法的原理很多资 ...

  7. 学习CV:《OpenCV 3计算机视觉Python语言实现第2版》中文PDF+英文PDF+代码

    理解与计算机视觉相关的算法.模型以及OpenCV 3 API背后的基本概念,有助于开发现实世界中的各种应用程序(比如:安全和监视领域的工具). OpenCV 3是一种先进的计算机视觉库,可以用于各种图 ...

  8. openCV 和GDI画线效率对照

    一. 因为项目须要,原来用GDI做的画线的功能.新的项目中考虑到垮平台的问题.打算用openCV来实现.故此做个效率对照. 二. 2点做一条线,来測试效率. 用了相同的画板大小---256*256的大 ...

  9. openCV 和GDI画线效率对比

    一. 由于项目需要,原来用GDI做的画线的功能,新的项目中考虑到垮平台的问题,打算用openCV来实现,故此做个效率对比. 二. 2点做一条线,来测试效率. 用了同样的画板大小---256*256的大 ...

随机推荐

  1. Bootstrap页面布局15 - BS带下拉菜单的按钮

    带下拉菜单的按钮 <div class='btn-toolbar'> <div class='btn-group'> <a href='javascript:;' cla ...

  2. 阻止默认行为stopDefault

    function stopDefault(e){ if(e && e.preventDefault) e.preventDefault(); else window.event.ret ...

  3. [daily][device][bluetooth] 蓝牙怎么办!(archlinux下驱动蓝牙鼠标,以及三星手机)

    去年地摊买的破无线鼠标坏掉了.看上微软的Designer Mouse蓝牙鼠,但是买之前我要确认我能不能驱起来. 这款鼠标只支持蓝牙4.0.系统支持windows8以上,不支持xp和windows7. ...

  4. Qt 之 自定义窗口标题栏(非常完善)

    http://blog.csdn.net/goforwardtostep/article/details/53494800

  5. Mysql 按行dump出数据

    mysqldump -u${user} -p${passwd} --skip-extended-insert --database ${dbname} --table ${tablename} > ...

  6. sphinx续5-主索引增量索引和实时索引

    原文件地址:http://blog.itpub.net/29806344/viewspace-1400942/ 在数据库数据非常庞大的时候,而且实时有新的数据插入,如果我们不更新索引,新的数据就sea ...

  7. 自动换行的矢量文字(android demo)

    由于矢量字体的宽度不同,自测android字体,发现当中文字体大小为100像素时,字母s等 宽度大概在52,字母l等 宽度大概在26,这样自动换行就不可以按字符的个数计算截取每行显示的字串. 直接上代 ...

  8. CENTOS安装vnc

    先直接进入命令模式,如果是服务器则可以使用putty连接进入命令行模式. 现在知道的centos下的vnc是:tigervnc,由于是服务端所以我们只安装tigervnc-server即可: yum ...

  9. 获取设备的唯一标识uuid

    摘自:http://blog.sina.com.cn/s/blog_5971cdd00102vqgy.html -(NSString*) uuid { CFUUIDRef puuid = CFUUID ...

  10. The "Real" Project Plan

    "I need a project plan by tomorrow morning." As project managers, that's what we hear. But ...