📄 8-5.cpp
字号:
// ************************* 程序 8-5 ****************************
/*** 程序功能:
对图像进行膨胀、腐蚀、开和闭运算
// ***************************************************************/
//
/*
#include "cv.h"
#include "highgui.h"
#include <stdlib.h>
#include <stdio.h>
IplImage *src = 0;
IplImage *image = 0;
IplImage *dest = 0;
IplConvKernel *element = 0;
const int element_shape = CV_SHAPE_RECT;
//全局变量,调整图像膨胀腐蚀参数
int global_pos = 0;
//开运算
void Opening ( int pos )
{
element = cvCreateStructuringElementEx ( pos * 2 + 1, pos * 2 + 1, pos, pos, element_shape, 0 );
cvErode ( src, image, element, 1 );
cvDilate ( image, dest, element, 1 );
cvReleaseStructuringElement ( &element );
cvShowImage ( "Opening&Closing window", dest );
}
//闭运算
void Closing ( int pos )
{
element = cvCreateStructuringElementEx ( pos * 2 + 1, pos * 2 + 1, pos, pos, element_shape, 0 );
cvDilate ( src, image, element, 1 );
cvErode ( image, dest, element, 1 );
cvReleaseStructuringElement ( &element );
cvShowImage ( "Opening&Closing window", dest );
}
//腐蚀
void Erosion ( int pos )
{
element = cvCreateStructuringElementEx ( pos * 2 + 1, pos * 2 + 1, pos, pos, element_shape, 0 );
cvErode ( src, dest, element, 1 );
cvReleaseStructuringElement ( &element );
cvShowImage ( "Erosion&Dilation window", dest );
}
//膨胀
void Dilation ( int pos )
{
element = cvCreateStructuringElementEx ( pos * 2 + 1, pos * 2 + 1, pos, pos, element_shape, 0 );
cvDilate ( src, dest, element, 1 );
cvReleaseStructuringElement ( &element );
cvShowImage ( "Erosion&Dilation window", dest );
}
int main ( int argc, char **argv )
{
char *filename = argc == 2 ? argv[1] : ( char * ) "test.jpg";
if ( ( src = cvLoadImage ( filename, 1 ) ) == 0 )
{
return -1;
}
image = cvCloneImage ( src );
dest = cvCloneImage ( src );
//创建窗口
cvNamedWindow ( "Opening&Closing window", 1 );
cvNamedWindow ( "Erosion&Dilation window", 1 );
cvShowImage ( "Opening&Closing window", src );
cvShowImage ( "Erosion&Dilation window", src );
//以函数名作为参数,trackbar调用函数,在函数中进行图像处理,global_pos引用传值当前滑块位置到pos。
cvCreateTrackbar ( "Open", "Opening&Closing window", &global_pos, 10, Opening );
cvCreateTrackbar ( "Close", "Opening&Closing window", &global_pos, 10, Closing );
cvCreateTrackbar ( "Dilate", "Erosion&Dilation window", &global_pos, 10, Dilation );
cvCreateTrackbar ( "Erode", "Erosion&Dilation window", &global_pos, 10, Erosion );
cvWaitKey ( 0 );
//释放图像数据
cvReleaseImage ( &src );
cvReleaseImage ( &image );
cvReleaseImage ( &dest );
//释放窗口
cvDestroyWindow ( "Opening&Closing window" );
cvDestroyWindow ( "Erosion&Dilation window" );
return 0;
}
//*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -