OpenCV学习笔记(三):腐蚀

为了方便找到想要找的代码,我把文章的题目里面加了每节的处理操作,可以通过题目知道笔记中的内容了。在此说明一下,加浅蓝色底色的部分是函数定义,我是想突出一下这部分所以加了底色。

腐蚀函数

void cv::erode(
InputArray src,
OutputArray dst,
InputArray kernel,
Point anchor = Point(-1,-1),
int iterations = 1,
int borderType = BORDER_CONSTANT,
const Scalar& borderValue = morphologyDefaultBorderValue())

其中,

src:需要进行腐蚀的原始输入图像,图像的通道数可以是任意的,但是要求图像的深度必须是CV_8U、CV_16U、CV_16S、CV_32F、CV_64F其中一种

dst:被腐蚀后所输出的目标图像,该图像和原始图像具有同样的类型和大小。

kernel:腐蚀操作时所采用的结构类型,如果element = Mat(),则使用一个3×3的核。它可以通过函数getStructuringElement()生成。

anchor:element结构中锚点的位置。该值默认为(-1,-1),在核的中心位置。

iterations:腐蚀操作迭代的次数,该值默认为1,即只进行一次腐蚀操作。

borderType:图像边界处理方法,一般采用其默认值BORDER_CONSTANT。

borderValue:边界值,一般采用其默认值morphologyDefaultBorderValue()。

注:kenel可以通过调用getStructuringElement()得到

其定义为

Mat cv::getStructuringElement(int shape,Size ksize,Point anchor = Point(-1,-1))

该函数用来返回一个用于形态学操作的指定大小和形状的结构元素。

其中,

shape:MorphShapes中的任意一个元素形状,分别是MORPH_RECT(矩形结构元素)、 MORPH_CROSS(十字星形结构元素)、MORPH_ELLIPSE(椭圆形结构元素)。

ksize:结构元素的大小。

anchor:结构元素中锚点的位置。默认的值是(-1,-1),是形状的中心。

#include   
#include   
#include   
#include   //erode()函数的头文件

using namespace cv;  

int main()  
{  
    // 读入一张图片 
    Mat img=imread("文字.jpg");  

    // 创建一个名为 "原始图像"窗口  和一个名为 "腐蚀图像"窗口  
    cvNamedWindow("原始图像"); 
    cvNamedWindow("腐蚀图像");

    // 在窗口中显示原始图像 
    imshow("原始图像",img); 

    //获取自定义核  
    Mat element = getStructuringElement(MORPH_RECT, Size(20, 20));  
    Mat out;  

    //腐蚀
    erode(img,out,element);

    //显示腐蚀图像 
    imshow("腐蚀图像", out);  
     
    // 等待6000 ms后窗口自动关闭  
    waitKey(6000);  
}  
: 在这个程序中,你会发现:

(1)erode函数和getStructuringElement函数的参数貌似都没有按照定义的那样填全,这是因为erode函数的后四个参数和getStructuringElement函数的最后一个参数它们都是有默认值得,当你不需要更改这个默认值得时候就不需要加这几个参数了,如果有必要更改这些值的时候,将参数补全就好了,新的参数就是你希望设置的参数值。

(2)getStructuringElement函数的第二个参数有一个Size(),Size函数中的数值分别代表了横向和纵向腐蚀程度,这两个值越大,腐蚀的效果越明显。可以根据实际的需求更改数值。通俗的解释就是,当Size的第一个参数很大的时候,文字就会变得很胖(横向腐蚀严重),当Size的第二个参数很大的时候,文字就会变得很长(纵向腐蚀严重)。


程序执行结果:getStructuringElement函数的第二个参数设置为Size(10,10),更多腐蚀结果读者可以自己更改数值得到。

OpenCV学习笔记(三):腐蚀_第1张图片



搞定!!!


你可能感兴趣的:(OpenCV学习笔记(三):腐蚀)