闲的时候用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. 不遗留问题-menu数据拼装

    DROP TABLE IF EXISTS `menu0910`; CREATE TABLE `menu0910` ( `id` ) NOT NULL AUTO_INCREMENT, `menu` ) ...

  2. Java笔试面试题二(常考问答)转

    1.说出ArrayList,Vector, LinkedList的存储性能和特性 ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允 ...

  3. Jsoncpp 数组的使用

    JsonCpp 是一个C++用来处理JSON 数据的开发包.下面讲一下怎么使用JsonCpp来序列化和反序列化Json对象,以实际代码为例子. 反序列化Json对象 比如一个Json对象的字符串序列如 ...

  4. JS获取Cookie值

    function GetLoginCookie() { var userCookie = getCookie("mycookie"); var loginname = userCo ...

  5. Bootstrap 表单和图片 (内联表单,表单合组,水平排列,复选框和单选框,下拉列表,校验状态,添加额外的图标,控制尺寸,图片)

    一.表单 基本格式 注:只有正确设置了输入框的 type 类型,才能被赋予正确的样式. 支持的输入框控件 包括:text.password.datetime.datetime-local.date.m ...

  6. python中的类,对象,方法,属性等介绍

    注:这篇文章写得很好.加底纹的是我自己的理解 python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性( ...

  7. 再谈CocoaPods

    1. 简介 java语言的第三方库管理工具是Maven,Node.js的第三方库管理工具是npm,而ios的第三方库管理工具是CocoaPods. CocoaPods 的原理是将所有的依赖库都放到名为 ...

  8. ArcGIS Engine开发之旅10--空间参考及坐标转换

    原文:ArcGIS Engine开发之旅10--空间参考及坐标转换 空间参考(Spatial Reference)是 GIS 数据的骨骼框架,能够将我们的数据定位到相应的位置,为地图中的每一点提供准确 ...

  9. ArcGIS API for Silverlight 调用GP服务准备---GP模型建立、发布、测试

    原文:ArcGIS API for Silverlight 调用GP服务准备---GP模型建立.发布.测试 第一篇.GP降雨量等值线建模.发布及测试 在水利.气象等行业中,要在WebGIS中实现空间分 ...

  10. 多选列表Select之双击删除与添加Demo

    双击任一Select控件,查看效果: srcA srcC srcB targetC targetB targetA   源码: <html> <head> <script ...