磁盘结构元素opencv vs Matlab

Muh*_*san 7 c++ matlab opencv image-processing mathematical-morphology

我想在OpenCv上创建一个磁盘形结构元素.我需要我的SE与之相似

sel = strel('disk',5);
Run Code Online (Sandbox Code Playgroud)

我想用这个来做

cvstructuringElementEx(cols,rows,anchor_x,anchor_y,shape,*values);
Run Code Online (Sandbox Code Playgroud)

什么是我需要做来实现这个和其价值anchor_x,并anchor_y给人以MATLAB SE同样中心点?

Amr*_*mro 6

根据文档,您可以尝试:

cv::Mat sel = cv::getStructuringElement(MORPH_ELLIPSE, cv::Size(9,9));
Run Code Online (Sandbox Code Playgroud)

这给了我以下结构元素:

0    0    0    0    1    0    0    0    0
0    1    1    1    1    1    1    1    0
0    1    1    1    1    1    1    1    0
1    1    1    1    1    1    1    1    1
1    1    1    1    1    1    1    1    1
1    1    1    1    1    1    1    1    1
0    1    1    1    1    1    1    1    0
0    1    1    1    1    1    1    1    0
0    0    0    0    1    0    0    0    0
Run Code Online (Sandbox Code Playgroud)

在MATLAB中,我得到了:

>> getnhood(strel('disk',5))
ans =
     0     0     1     1     1     1     1     0     0
     0     1     1     1     1     1     1     1     0
     1     1     1     1     1     1     1     1     1
     1     1     1     1     1     1     1     1     1
     1     1     1     1     1     1     1     1     1
     1     1     1     1     1     1     1     1     1
     1     1     1     1     1     1     1     1     1
     0     1     1     1     1     1     1     1     0
     0     0     1     1     1     1     1     0     0
Run Code Online (Sandbox Code Playgroud)

所以不完全相同,但足够接近:)