原创文章,欢迎转载,转载请注明出处

前面进行了彩色的模糊处理,我们对黑白图片进行同样的平滑处理,看看效果。
首先是需要创建黑白图片,我对opencv的各种函数还不是很熟悉,我们可以先用熟悉的创建单通道的图片。

 IplImage* img = cvCreateImage(cvSize(, ), IPL_DEPTH_8U,);  
 创建一张300*300pixel大小的图片,然后我们需要对像素进行操作,让图片编程全黑,然后让中心像素为白。
 对像素的操作也有不少方法,我们用简单暴力的。

IplImage结构体里面有一个imageData成员,它是指向图像数据的指针,可以通过它直接读写像素。
代码如下:

     uchar *data;
data = (uchar *)img->imageData;
for(i = ; i <img->width; i++)
{
for (j = ; j< img->height; j++)
{
//data[i*img->widthStep+j] = 0;
CV_IMAGE_ELEM(img, unsigned char, i, j) = ;
}
}

这个很容易理解,就是用一个uchar的指针指向图像数据,然后计算偏移量,然后控制对像素的读写,我们这里偷懒了,用了数组方式的访问,其实和起始地址加偏移量是一样的哈。
可以发现,我们没有用 data[i*img->widthStep+j] = 0;,而是用了CV_IMAGE_ELEM(img, unsigned char, i, j) = 0; CV_IMAGE_ELEM是一个宏,它里面帮我们封装了下,用起来也挺简单的,所以就用它了,其定义在types_c.h里面,它的宏定义如下:

 /* get reference to pixel at (col,row),
for multi-channel images (col) should be multiplied by number of channels */
#define CV_IMAGE_ELEM( image, elemtype, row, col ) \
(((elemtype*)((image)->imageData + (image)->widthStep*(row)))[(col)])

这个就不解释了,很容易理解的。接下来就是把中心点设置成白色了,直接套用宏。

 CV_IMAGE_ELEM(img, unsigned char, img->width/, img->height/) = ;

接下来就用上一节的代码smooth下就好了,
先看看5*5高斯滤波和9*9高斯滤波的效果。如下图,从左到右依次为原图,5*5,9*9

下面我们看看5*5两次和一次9*9效果对比,从左到右依次为原图,5*5两次和9*9

第一眼看上去觉得他们5*5两次和9*9没smooth后的效果差不多,但是实际呢?我们把中心点smooth后的数值答应出来了,在上图的最右边,可以看到原图中心点是255,5*5一次后是36,两次后是19,9*9一次就是14了。。
看点效果不明显,我们把上面的白点变成白面,然后再算一次,

OpenCV学习 6:平滑滤波器 cvSmooth()——2的更多相关文章

  1. OpenCV 学习笔记 02 使用opencv处理图像

    1 不同色彩空间的转换 opencv 中有数百种关于不同色彩空间的转换方法,但常用的有三种色彩空间:灰度.BRG.HSV(Hue-Saturation-Value) 灰度 - 灰度色彩空间是通过去除彩 ...

  2. opencv学习笔记(七)SVM+HOG

    opencv学习笔记(七)SVM+HOG 一.简介 方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子 ...

  3. opencv学习笔记(六)直方图比较图片相似度

    opencv学习笔记(六)直方图比较图片相似度 opencv提供了API来比较图片的相似程度,使我们很简单的就能对2个图片进行比较,这就是直方图的比较,直方图英文是histogram, 原理就是就是将 ...

  4. opencv学习笔记(五)镜像对称

    opencv学习笔记(五)镜像对称 设图像的宽度为width,长度为height.(x,y)为变换后的坐标,(x0,y0)为原图像的坐标. 水平镜像变换: 代码实现: #include <ios ...

  5. opencv学习笔记(四)投影

    opencv学习笔记(四)投影 任选了一张图片用于测试,图片如下所示: #include <cv.h> #include <highgui.h> using namespace ...

  6. opencv学习笔记(三)基本数据类型

    opencv学习笔记(三)基本数据类型 类:DataType 将C++数据类型转换为对应的opencv数据类型 OpenCV原始数据类型的特征模版.OpenCV的原始数据类型包括unsigned ch ...

  7. opencv学习笔记(二)寻找轮廓

    opencv学习笔记(二)寻找轮廓 opencv中使用findContours函数来查找轮廓,这个函数的原型为: void findContours(InputOutputArray image, O ...

  8. opencv学习笔记(一)IplImage, CvMat, Mat 的关系

    opencv学习笔记(一)IplImage, CvMat, Mat 的关系 opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,M ...

  9. paper 93:OpenCV学习笔记大集锦

    整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的.如果有好的资源,也欢迎介绍和分享. 1:OpenCV学习笔记 作者:CSDN数量:55篇博文网址: ...

  10. (转) OpenCV学习笔记大集锦 与 图像视觉博客资源2之MIT斯坦福CMU

          首页 视界智尚 算法技术 每日技术 来打我呀 注册     OpenCV学习笔记大集锦 整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的 ...

随机推荐

  1. Hadoop学习资料收集

    1.漫画HDFS工作原理  http://blog.csdn.net/netcoder/article/details/7442779 2.马哥教育 http://mageedu.blog.51cto ...

  2. C++结构体中sizeof(1)

    sizeof sizeof操作符的作用是返回一个对象或类型名的长度,长度的单位是字节. 返回值的类型是标准库命名为size_t的类型,size_t类型定义在cstddef头文件中,该头文件是C标准库的 ...

  3. struts2笔记09-动态方法调用

    1.action配置 <action name="testDynamic" class="com.test.actions.TestAction"> ...

  4. Scrapy的架构初探

    Scrapy,Python开发的一个web抓取框架. 1,引言 Python即时网络爬虫启动的目标是一起把互联网变成大数据库.单纯的开放源代码并不是开源的全部,开源的核心是“开放的思想”,聚合最好的想 ...

  5. jupyter巨好玩-使用jupyter结合VScode写博客

    打开jupyter-ipython 其实人家就叫jupyter了,后面咱可能就少提ipython了. # 打开命令行,让我们输入 jupyter notebook 当然,这个前提是你已经安装了jupy ...

  6. Python简明教程---学习笔记

    字符双引号括起,数字不括: 分隔符为逗号(,),不能为空格 变量定义时即赋值 采用utf-8编码:#-*-coding:utf-8-*-或者#coding:utf-8 字符串定义:单/双引号括起 %符 ...

  7. Python命令行参数sys.argv[]

    学习C语言的时候就没弄明白命令行参数的用法,在学习Pyton 的时候又遇到了命令行参数,在这里稍微学习了一下,稍微明白了一些在这里做个记录方便后面回顾复习. Sys.argv[]是用来获取命令行参数的 ...

  8. UML--用例图

    一.UML概述 1.UML的作用:a 把复杂的问题分解   b 实现了可视化     UML是由Rational公司创建的 2.UML是什么:是一种语言,有属于自己的标准表达规则,是一种分析设计语言, ...

  9. Delphi使用Windows API函数AnimateWindow实现窗体特效

    {**********************************************************************API函数 AnimateWindow 使用:函数功能:窗 ...

  10. 适合入门自学服装裁剪滴书(更新ing)

    [♣]适合入门自学服装裁剪滴书(更新ing) [♣]适合入门自学服装裁剪滴书(更新ing) 适合入门自学服装裁剪滴书(更新ing) 来自: 裁缝阿普(不为良匠,便为良医.) 2014-04-06 23 ...