#include <iostream>
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 = 3;
int const max_kernel_size = 21;
void Erosion( int, void* );
void Dilation( int, void* );
int main(
int argc,
char** argv )
{
src = imread( samples::findFile( parser.get<
String>(
"@input" ) ), IMREAD_COLOR );
{
cout << "無法開啟或找到影像!\n" << endl;
cout << "用法: " << argv[0] << " <輸入影像>" << endl;
return -1;
}
namedWindow( "腐蝕演示", WINDOW_AUTOSIZE );
namedWindow( "膨脹演示", WINDOW_AUTOSIZE );
moveWindow(
"膨脹演示", src.
cols, 0 );
createTrackbar( "元素:\n 0: 矩形 \n 1: 十字形 \n 2: 橢圓形 \n 3: 菱形", "腐蝕演示",
&erosion_elem, max_elem,
Erosion );
createTrackbar( "核心大小:\n 2n +1", "腐蝕演示",
&erosion_size, max_kernel_size,
Erosion );
createTrackbar( "元素:\n 0: 矩形 \n 1: 十字形 \n 2: 橢圓形 \n 3: 菱形", "膨脹演示",
&dilation_elem, max_elem,
Dilation );
createTrackbar( "核心大小:\n 2n +1", "膨脹演示",
&dilation_size, max_kernel_size,
Dilation );
Erosion( 0, 0 );
Dilation( 0, 0 );
waitKey(0);
return 0;
}
void Erosion( int, void* )
{
int erosion_type = 0;
if( erosion_elem == 0 ){ erosion_type =
MORPH_RECT; }
else if( erosion_elem == 1 ){ erosion_type =
MORPH_CROSS; }
Size( 2*erosion_size + 1, 2*erosion_size+1 ),
Point( erosion_size, erosion_size ) );
erode( src, erosion_dst, element );
imshow(
"腐蝕演示", erosion_dst );
}
void Dilation( int, void* )
{
int dilation_type = 0;
if( dilation_elem == 0 ){ dilation_type =
MORPH_RECT; }
else if( dilation_elem == 1 ){ dilation_type =
MORPH_CROSS; }
Size( 2*dilation_size + 1, 2*dilation_size+1 ),
Point( dilation_size, dilation_size ) );
dilate( src, dilation_dst, element );
imshow(
"膨脹演示", dilation_dst );
}
如果陣列沒有元素,則返回 true。
int64_t int64
cv::getTickFrequency
double getTickFrequency()
用於指定影像或矩形大小的模板類。
Definition types.hpp:335
std::string String
定義 cvstd.hpp:151
void imshow(const String &winname, InputArray mat)
在指定視窗中顯示影像。
void dilate(InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar &borderValue=morphologyDefaultBorderValue())
使用特定的結構元素對影像進行膨脹。
Mat getStructuringElement(int shape, Size ksize, Point anchor=Point(-1,-1))
返回指定大小和形狀的結構元素,用於形態學操作。
void erode(InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar &borderValue=morphologyDefaultBorderValue())
使用特定的結構元素對影像進行腐蝕。
@ MORPH_RECT
矩形結構元素
定義 imgproc.hpp:235
@ MORPH_CROSS
定義 imgproc.hpp:236
@ MORPH_ELLIPSE
進入矩形 Rect(0, 0, esize.width, esize.height)
定義 imgproc.hpp:238
@ MORPH_DIAMOND
由曼哈頓距離定義的菱形結構元素
定義 imgproc.hpp:240
int main(int argc, char *argv[])
定義 highgui_qt.cpp:3