我想在 OpenCv 上创建一个圆盘形结构元素。我需要我的 SE 与
sel = strel('disk',5);
我想用
cvstructuringElementEx(cols,rows,anchor_x,anchor_y,shape,*values);
我需要做什么才能实现这一点,anchor_x
和 anchor_y
的哪些值给出与 MATLAB 相同的 SE 中心点?
最佳答案
根据 the docs ,你可以试试:
cv::Mat sel = cv::getStructuringElement(MORPH_ELLIPSE, cv::Size(9,9));
这给了我以下结构元素:
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
在使用 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
所以不完全相同但足够接近:)
关于c++ - 磁盘结构元素opencv vs Matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17251541/