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;

       

      

  • 相关阅读:
    网线
    第19次实验
    矩阵乘法
    20次试验
    视频笔记
    1
    effective C++ 条款 34:区分接口继承和实现继承
    effective C++ 条款 35:考虑virtual函数以外的其他选择
    effective C++ 条款 29:为“异常安全”而努力是值得的
    effective C++ 条款 27:尽量少做转型动作
  • 原文地址:https://www.cnblogs.com/iamfongbao/p/2754378.html
Copyright © 2011-2022 走看看