?? 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 + -