zoukankan      html  css  js  c++  java
  • openCV学习笔记(2)__openCV简单的图片处理(雪花,减少颜色)

    openCV简单的图片处理(雪花,减少颜色)

    20121012

    22:32

       

    继而,搭建好平台之后,就可以用openCV进行简单的图片处理.这里的笔记,是在这本书(OpenCV_2_Computer_Vision_Application_Programming_Cookbook)的基础上学习的.,言归正传.

       

    第一个函数,在上一个的main函数里面进行实现.

       

    雪花:(尊重原文,这里用的是原文的salt函数,撒盐``)

    首先,是原图的显示:

       

       

    屏幕剪辑的捕获时间: 2012/11/4 22:33

       

    这次放在E,就不用用管理员权限来操作了.继续而这次的函数salt,作用是在图上按照自己需要的点数来添加白点.

       

    源码://被注释掉的东西表示用来玩的说``

       

       

       

       

    屏幕剪辑的捕获时间: 2012/11/4 22:55

       

       

       

       

    大概应该可以看得出,rand()%image.cols rand()%image.rows表示的就是图的column(纵列)row(横列),对随机出来的像素进行修改.

       

    对于if else 部分:

       

    图像的组成,用灰度来表示.比如黑白的图像,用灰度图就可以表示出来.如果面对的是彩图,一般按照三基色(红绿蓝)每个像素由3个基本颜色的不同灰度表示,也就是说,如果image channel3的时候,需要修改三个channel的参数,而如果单单是黑白,channel只有1,那么只要修改一个参数就可以.

    可知,255是一个尽头``` 白色``

    函数的主体如下:

       

       

       

    屏幕剪辑的捕获时间: 2012/11/4 22:56

       

       

    //注释的colorReduce是下一个函数

       

    运行结果``如下``:

       

       

    屏幕剪辑的捕获时间: 2012/11/4 22:58

       

    加上10000``?

       

       

    屏幕剪辑的捕获时间: 2012/11/4 22:59

       

       

       

    屏幕剪辑的捕获时间: 2012/11/4 23:02

       

    如果参数改成0?

       

       

    屏幕剪辑的捕获时间: 2012/11/4 23:04

       

    结果如下:

       

       

    屏幕剪辑的捕获时间: 2012/11/4 23:05

       

    撒胡椒的说`` 黑色是白色的另外一端``

    每一个像素是又一个8-bit unsigned char型储存,因而色的数目就有256x256x256.数目之大,因而,下面的函数是用来减少颜色的种类的.

       

       

       

    函数主体:

       

       

       

    屏幕剪辑的捕获时间: 2012/11/4 23:14

       

       

       

    当中的div可以理解为每个灰度级划分的多少.

       

    屏幕剪辑的捕获时间: 2012/11/4 23:19

       

    这个函数体是主要的处理,例如是256,这个表达就会把[0,div)区间的色素变成div/2,[div,2*div)的就会变成3*div/2,把周围附近的色调简化为一个色调.这样对颜色进行了简化.

       

    运行结果如下:

       

       

       

    屏幕剪辑的捕获时间: 2012/11/4 23:22

       

    效果不太明显.

       

    div换成是64的话:

       

       

       

    屏幕剪辑的捕获时间: 2012/11/4 23:23

       

    继续加强的话:

       

       

    屏幕剪辑的捕获时间: 2012/11/4 23:24

       

       

       

    屏幕剪辑的捕获时间: 2012/11/4 23:24

       

       

    随着分化,颜色表示的单调性会让颜色越来越枯燥.

       

    函数的主体,salt注释掉,colorReduce加上就好.

       

       

    记得要在主体前面加上声明,

       

    屏幕剪辑的捕获时间: 2012/11/4 23:26

       

    ps:对于colorReduce的函数,主体还有几个方法:

     data[i]=    data[i] – data[i]%div + div/2;

    和上述的方法一样,不过这个是先退回到原点在加上div/2

    另外一个,是使用位运算:

    uchar mask= 0xFF<<n; // e.g. for div=16, mask= 0xF0
    data[i]= (data[i]&mask) + div/2;

       

      

  • 相关阅读:
    mysql 之 double( totalsize, decimal)
    java8 实战--- Map merge用法
    java8 stream接口 终端操作 min,max,findFirst,findAny
    tinyint(1)详解
    表单插件——form
    表单验证插件——validate
    使用ajaxStart()和ajaxStop()方法
    使用ajaxSetup()方法设置全局Ajax默认选项
    使用ajax()方法加载服务器数据
    使用serialize()方法序列化表单元素值
  • 原文地址:https://www.cnblogs.com/iamfongbao/p/2754378.html
Copyright © 2011-2022 走看看