闲的时候用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. RT-Thread信号量的基本操作

    抽象的来讲,信号量的特性如下:信号量是一个非负整数(车位数),所有通过它的线程/进程(车辆)都会将该整数减一(通过它当然是为了使用资源),当该整数值为 0 时,所有试图通过它的线程都将处于等待状态.在 ...

  2. vbaexcel

    Sub WordTest() Dim objwordApp As Word.Application Dim objword As Word.Document Dim objSeheet As Stri ...

  3. Git相关的项目

    1.posh-git Git的PowerShell扩展 项目地址: https://github.com/dahlbyk/posh-git 可以用psget快速安装扩展模块,psget下载安装地址 h ...

  4. (转)JAVA 调用matlab

    本文仅用于学习. 原文地址链接:http://blog.csdn.net/wannshan/article/details/5907877 前段时间摸索了java调用matlab东西,不说学的有多深, ...

  5. App之百度云推送

    集成SDK 下载最新的Android SDK压缩包并解压,在新建工程或已有工程中增加百度云推送功能. 我下载的是 ,里面有一个同名的文件夹,文件夹中有 导入云推送jar包和so文件: 将解压后的lib ...

  6. oracle EBS 资产定义

    一.资产定义也就是江项目任务上的特定(能生成资产的)物料按照一定格式生成资产信息,其中每个独立物料生成一条资产,具体操作步骤如下: 1.省本部库存超级用户系统内生成领料单.审批领料单.最后进行出库处理 ...

  7. 更强大的trim功能,过滤汉字等

    第一种方法:通过php自带的函数 <?php /* trim 去除一个字符串两端空格, rtrim 是去除一个字符串右部空格, ltrim 是去除一个字符串左部空格. */ ?> < ...

  8. HBase的完全分布式的搭建与部署,以及多master

    一:前提准备 1.设置时间同步 2.清空logs,datas 3.格式化集群 bin/hdfs namenode -format 4.重启集群 sbin/start-dfs.sh sbin/start ...

  9. yii2.0框架中session与cookie的用法

    我们在开发项目中南面使用到session给和cookie,那么在yii中有他自己的规则 如下案例: session使用     function actionS1(){         echo $t ...

  10. 设计模式:单例模式(Singleton)

    定义:确保一个类仅有一个实例,并提供一个访问它的全局访问点. 优点:在内存中只有一个对象,节省了内存空间 示例: Singleton.cs 写法一:非线程安全 public class Singlet ...