您的位置:首页 > 运维架构

OpenCV中图像处理函数

2016-12-19 22:01 330 查看
OpenCV 2.4 Cheat Sheet (C++)系列——Image Processsing

另:Cv图像处理

1。滤波 Filtering
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。几何变换 Geometrical Transformations

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。 图像变换 Various Image Transformations

cvtColor()色彩空间转换。这个函数可以用于把CCD的raw格式转换为RGB,请参考,但是不能用于把灰度图转成伪彩图,请参考

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

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

floodFill()  填充连通域。

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

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

watershed()  分水岭图像分割。

grabCut()

一种彩色图像分割算法,效果可以参考这里。See the samples watershed.cpp and grabcut.cpp.
4。 直方图 Histograms

calcHist()  计算直方图。

calcBackProject()  计算反向投影。

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

compareHist()  比较两个直方图。

例子:计算图像的色调-饱和度直方图。

Mat hsv, H;

cvtColor(image, hsv, C
4000
VBGR2HSV);

int planes[]=f0, 1g, hsize[] = f32, 32g;

calcHist(&hsv, 1, planes, Mat(), H, 2, hsize, 0);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: