四、图像处理(呵呵,重头戏来了)
1. 滤波
filter2D()
用核函数对图像做卷积。

sepFilter2D()
用分解的核函数对图像做卷积。
首先,图像的每一行与一维的核kernelX做卷积;然后,运算结果的每一列与一维的核kernelY做卷积。

boxFilter()
就是滑动窗口平均滤波的二维版。

GaussianBlur()
高斯平均,也就是高斯模糊。

medianBlur()
中值滤波,个人最爱的滤波函数。

bilateralFilter()
双线性滤波。

前面这四个函数是原来OpenCV里的cvSmooth()取不同参数的应用。

Sobel()
使用扩展Sobel
算子计算一阶、二阶、三阶或混合图像差分,看冈萨雷斯的那本《数字图像处理》。

Scharr()
计算一阶导,x方向或y方向,以前这个方法是放在cvSobel里的。

Laplacian()
拉普拉斯变换。

erode(), dilate()
腐蚀、膨胀。

示例:
filter2D(image, image, image.depth(),(Mat<float>(3,3)<<-1,-1, -1, -1, 9, -1, -1, -1, -1), Point(1,1),128);
构造了一个如下所示的核对图像做卷积:
-1 -1 -1
-1 9 -1
-1 -1 -1
核的锚点在(1,1)位置,卷积之后每个像素加上128.

2. 几何变换
resize()
改变图像尺寸,可以指定x方向和y方向上的缩放比例,可以指定插值方法。

getRectSubPix()
以亚像素精度从图像中提取矩形。
dst(x,y)=src(x+center.x-(dst.cols-1)*0.5,y+center.y-(dst.rows-1)*0.5)
其中非整数象素点坐标采用双线性插值提取。

warpAffine()
放射变换,看冈萨雷斯《数字图像处理》。

warpPerspective()
透射变换。

remap()
几何变换。

convertMaps()
这是啥?没用过,呵呵。

示例:
Mat dst;
resize(src, dst, Size(), 1./sqrt(2),1./sqrt(2));
把图像缩小到原来的根号二分之一。

3. 图像变换
cvtColor()
色彩空间转换。
顺便提一句,这个函数可以用于把CCD的raw格式转换为RGB,请参考:
http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=18681
但是不能用于把灰度图转成伪彩图,请参考:
http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=23729

threshold()
二值化,常用操作,一般应用时建议用大津算法,即使用THRESH_OTSU参数。

adaptivethreshold()
自适应阈值的二值化。

floodFill()
填充连通域。

integral()
计算积分图像,一次或者二次。

distanceTransform()
距离变换,对原图像的每一个像素计算到最近非零像素的距离。

watershed()
分水岭图像分割。

grabCut()
一种彩色图像分割算法,效果可以参考这里:
http://www.cnblogs.com/xrwang/archive/2010/04/27/GrabCut.html

4. 直方图
calcHist()
计算直方图。

calcBackProject()
计算反向投影。

equalizeHist()
灰度图像的直方图均衡化,常用操作。

compareHist()
比较两个直方图。

栗子:
Mat hsv, H;
cvtColor(image, hsv, CVBGR2HSV);
int planes[]=f0, 1g, hsize[] = f32, 32g;
calcHist(&hsv, 1, planes, Mat(), H, 2, hsize,0);
计算图像的色调-饱和度直方图。

sume
2013/1/5

[转载] OpenCV2.4.3 CheatSheet学习(三)的更多相关文章

  1. [转载] OpenCV2.4.3 CheatSheet学习(一)

    OpenCV向MATLAB靠拢,图像的操作方法变得不那么C了,更m了一些.比如,MATLAB中的常用函数imshow.imread.imwrite函数在OpenCV中已经有了同名的兄弟. 此外,Ope ...

  2. [转载] OpenCV2.4.3 CheatSheet学习(四)

    五.数据的输入和输出 1. 将数据写入YAML(或XML) 注意,在OpenCV中,无论读写,文件的格式均由指定的后缀名确定.示例: FileStorage fs("test.yml&quo ...

  3. [转载] OpenCV2.4.3 CheatSheet学习(二)

    二.矩阵操作(拷贝.洗牌.局部访问): src.copyTo(dst) 把src矩阵中的数据拷贝到dst. src.convertTo(dst, type,scale, shift) 缩放并转换到另外 ...

  4. Android JNI学习(三)——Java与Native相互调用

    本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...

  5. GCD学习 —— 三

    ​ 学习学习dispatch_block,在向队列中添加任务时,可以直接在对应的函数中添加 block.但是如果想对任务进行操作,比如监听任务.取消任务,就需要获取对应的 block. 1 创建Blo ...

  6. 转载:WinForm中播放声音的三种方法

    转载:WinForm中播放声音的三种方法 金刚 winForm 播放声音 本文是转载的文章.原文出处:http://blog.csdn.net/jijunwu/article/details/4753 ...

  7. HTTP学习三:HTTPS

    HTTP学习三:HTTPS 1 HTTP安全问题 HTTP1.0/1.1在网络中是明文传输的,因此会被黑客进行攻击. 1.1 窃取数据 因为HTTP1.0/1.1是明文的,黑客很容易获得用户的重要数据 ...

  8. TweenMax动画库学习(三)

    目录               TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)           ...

  9. Struts2框架学习(三) 数据处理

    Struts2框架学习(三) 数据处理 Struts2框架框架使用OGNL语言和值栈技术实现数据的流转处理. 值栈就相当于一个容器,用来存放数据,而OGNL是一种快速查询数据的语言. 值栈:Value ...

随机推荐

  1. System.Clollections.IEnumerable.cs

    ylbtech-System.Clollections.IEnumerable.cs 1.程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicK ...

  2. Oracle一条数据多表连插

    insert all into T_TRAIN_MARSHALLING <trim prefix="(GKEY," suffix=")" suffixOv ...

  3. 16.ajax_case06

    # 抓取华尔街见闻实时快讯 # https://wallstreetcn.com/live/global?from=navbar import requests import json header ...

  4. <随便写>进程基本知识

    from multiprocessing import Process, Queue,Pool import time import os def producer(q): for i in rang ...

  5. MVC中利用ViewBag传递Json数据时的前端处理方法

    用viewBag传递Json字符串到前端时,json字符串中的“会被转义为& quot,前端处理方法为@Html.Raw(Json.Encode(ViewBag.Data)),再用eval() ...

  6. CDH断电后 hbase出现spilt块不完整问题

    从错误看起来是regionspilt时候断电了,导致hbase master启动不起来,因为是测试环境只能删除这些region了,掉一部分数据 删除hbase下spilt块,删除zK里面的habse ...

  7. 解决 no compatible version found: ionic-native@^3.5.0

    npm ERR! Linux --generic npm ERR! argv "/usr/src/node-v6.10.3-linux-x64/bin/node" "/u ...

  8. 关于underline

    1, 有些系统可能看不到下划线的效果,这是不妨按着Alt键看看: 2, underline=#, 数字表示在哪个字母下显示下划线,从0开始

  9. 「BZOJ2300」[HAOI2011] 防线修建

    传送门 操作离线之后倒着做,只有加点操作. 用set动态维护凸包即可. //Achen #include<algorithm> #include<iostream> #incl ...

  10. VMware的下载安装

    在学习使用LINNX系统之前,先在自己的电脑上安装一个虚拟机,流行的虚拟机软件有VMware(VMWare ACE).Virtual Box和Virtual PC,它们都能在Windows系统上虚拟出 ...