膨胀腐蚀对静态车辆检测

骑猪看日落 2022-02-05 06:23 222阅读 0赞

场景

前期进行了二值化处理,车辆和道路存在连通区域,实际上,就没有必要再次进行形态学的算法处理,不过为了练习使用膨胀和腐蚀,并且了解函数的基本使用,还是进行了处理

代码

#include “cv.h”

#include “highgui.h”

#include “opencv2/opencv.hpp”

using namespace cv;

Mat srcMat, erosion_dst, dilation_dst;

int erosion_elem = 0;

int erosion_size = 0;

int dilation_elem = 0;

int dilation_size = 0;

int const max_elem = 2;

int const max_kernel_size = 21;

void Erosion( int, void* );

void Dilation( int, void* );

void Erosion( int, void* )

{

int erosion_type;

if( erosion_elem == 0 ){ erosion_type = MORPH_RECT; }

else if( erosion_elem == 1 ){ erosion_type = MORPH_CROSS; }

else if( erosion_elem == 2) { erosion_type = MORPH_ELLIPSE; }

Mat element = getStructuringElement( erosion_type,

Size( 2*erosion_size + 1, 2*erosion_size+1 ),

Point( erosion_size, erosion_size ) );

/// 腐蚀操作

erode( srcMat, erosion_dst, element );

imshow( “Erosion Demo”, erosion_dst );

}

void Dilation( int, void* )

{

int dilation_type;

if( dilation_elem == 0 ){ dilation_type = MORPH_RECT; }

else if( dilation_elem == 1 ){ dilation_type = MORPH_CROSS; }

else if( dilation_elem == 2) { dilation_type = MORPH_ELLIPSE; }

Mat element = getStructuringElement( dilation_type,

Size( 2*dilation_size + 1, 2*dilation_size+1 ),

Point( dilation_size, dilation_size ) );

///膨胀操作

dilate( srcMat, dilation_dst, element );

imshow( “Dilation Demo”, dilation_dst );

}

int main() {

srcMat = imread( “D:/20170601092226.png” );

if( !srcMat.data ) return -1;

cvtColor(srcMat, srcMat, CV_BGR2GRAY);

threshold(srcMat, srcMat, 100, 255, CV_THRESH_BINARY);

namedWindow( “Erosion Demo”, CV_WINDOW_AUTOSIZE );

namedWindow( “Dilation Demo”, CV_WINDOW_AUTOSIZE );

cvMoveWindow( “Dilation Demo”, srcMat.cols, 0 );

/// 创建腐蚀 Trackbar

createTrackbar( “Element:\n 0: Rect \n 1: Cross \n 2: Ellipse”, “Erosion Demo”,

&erosion_elem, max_elem,

Erosion );

createTrackbar( “Kernel size:\n 2n +1”, “Erosion Demo”,

&erosion_size, max_kernel_size,

Erosion );

/// 创建膨胀 Trackbar

createTrackbar( “Element:\n 0: Rect \n 1: Cross \n 2: Ellipse”, “Dilation Demo”,

&dilation_elem, max_elem,

Dilation );

createTrackbar( “Kernel size:\n 2n +1”, “Dilation Demo”,

&dilation_size, max_kernel_size,

Dilation );

Erosion( 0, 0 );

Dilation( 0, 0 );

waitKey(0);

return 0;

}

本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1893563,如需转载请自行联系原作者

发表评论

表情:
评论列表 (有 0 条评论,222人围观)

还没有评论,来说两句吧...

相关阅读

    相关 膨胀腐蚀静态车辆检测

    场景 前期进行了二值化处理,车辆和道路存在连通区域,实际上,就没有必要再次进行形态学的算法处理,不过为了练习使用膨胀和腐蚀,并且了解函数的基本使用,还是进行了处理