OpenCV自带例子(八)图像腐蚀与膨胀
2011-12-05 19:39
253 查看
腐蚀就是使用算法,将图像的边缘腐蚀掉。作用就是将目标的边缘的“毛刺”踢除掉。
膨胀就是使用算法,将图像的边缘扩大些。作用就是将目标的边缘或者是内部的坑填掉。
膨胀就是使用算法,将图像的边缘扩大些。作用就是将目标的边缘或者是内部的坑填掉。
#include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <stdlib.h> #include <stdio.h> using namespace cv; //Global Variables Mat src, 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; /**Function headers */ void Erosion( int, void* ); void Dilation( int, void* ); int main( int argc, char** argv ) { // Load an image src = imread( "D:\\image\\aa.jpg" ); if ( !src.data ) { return -1; } // create windows namedWindow( "Erosion Demo", CV_WINDOW_AUTOSIZE ); namedWindow( "Dilation Demo", CV_WINDOW_AUTOSIZE ); cvMoveWindow( "Dilation Demo", src.cols, 0 ); // create erosion 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 ); // create dilation 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 ); //default start Erosion( 0, 0 ); Dilation( 0, 0 ); waitKey(); imwrite("D:\\image\\erosion.jpg", erosion_dst); imwrite("D:\\image\\dilation.jpg", dilation_dst); return 0; } 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 )); // apply the erosion operation erode ( src, 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)); // apply the dilation operation dilate( src, dilation_dst, element ); imshow( "Dilation Demo", dilation_dst); }
相关文章推荐
- OpenCV学习(12) 图像的腐蚀与膨胀(3)
- 【OpenCV学习笔记】2.3图像的腐蚀、膨胀、模糊、边缘检测
- OpenCV学习笔记:二值图像的腐蚀和膨胀的原理
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- OpenCV1.0图像处理形态学操作腐蚀Erode与膨胀Dilate
- 学习【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀----思维导图笔记
- opencv开发笔记(一):opencv图像的腐蚀、膨胀与图像的显示
- OpenCV之imgproc 模块. 图像处理(1)图像平滑处理 腐蚀与膨胀(Eroding and Dilating) 更多形态学变换 图像金字塔 基本的阈值操作
- OpenCV学习 7:图像形态学:腐蚀、膨胀
- OpenCV自带例子(三)两幅图像相加
- OpenCV&图像处理_3:以腐蚀[eroding]和膨胀[dilating]为基础的形态学操作和图像金字塔[image pyramids]
- opencv中的图像形态学——腐蚀膨胀
- OpenCV1.0图像处理形态学操作腐蚀Erode与膨胀Dilate
- OpenCV自带例子 (十) 图像几何变换
- 有关opencv的学习(16)—图像的膨胀和腐蚀(2)
- python opencv3图像膨胀和腐蚀
- 用opencv滑动条调整图像的腐蚀膨胀效果
- OpenCV图像处理篇之腐蚀与膨胀
- opencv:图像的腐蚀和膨胀
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀