闲的时候用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. 时间函数 date strtotime

    date_default_timezone_set('Asia/Shanghai');echo strtotime('Today');echo strtotime(date('Y-m-d')); 获取 ...

  2. prototype linkage can reduce object initialization time and memory consumption

    //对象是可变的键控集合, //"numbers, strings, booleans (true and false), null, and undefined" 不是对象的解释 ...

  3. P1541 乌龟棋

    30分做法,暴力枚举: #include <bits/stdc++.h> using namespace std; const int maxn = 400; int n, m; int ...

  4. Machine Learning in Action -- AdaBoost

    初始的想法就是,结合不同的分类算法来给出综合的结果,会比较准确一些 称为ensemble methods or meta-algorithms,集成方法或元算法 集成方法有很多种,可以是不同算法之间的 ...

  5. java Channel filp compact

    import java.nio.ByteBuffer; //Listing 7-1. Copying Bytes from an Input Channel to an Output Channel ...

  6. bootstrap响应式实用工具

  7. Bluetooth Low Energy介绍

    目录 1. 介绍 2. 协议栈 3. 实现方案 3.1 硬件实现方案 3.2 软件实现方案 1. 介绍 Bluetooth low energy,也称BLE(低功耗蓝牙),在4.0规范中提出 BLE分 ...

  8. oj 1031 random permutation

    Problem A: Random Permutations Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 91  Solved: 54 Descri ...

  9. awk统计nginx日志访问前一百的ip

    访问ip  awk '{print $1}' access.log| sort | uniq -c | sort -n -k 1 -r | head -n 100 访问地址 awk '{print $ ...

  10. xcode8继续愉快的使用插件

    https://github.com/inket/update_xcode_plugins https://github.com/fpg1503/MakeXcodeGr8Again xcode8增加了 ...