c++ - 磁盘结构元素opencv vs Matlab

标签 c++ matlab opencv image-processing mathematical-morphology

我想在 OpenCv 上创建一个圆盘形结构元素。我需要我的 SE 与

sel = strel('disk',5);

我想用

cvstructuringElementEx(cols,rows,anchor_x,anchor_y,shape,*values);

我需要做什么才能实现这一点,anchor_xanchor_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/

相关文章:

perl - 如何获得巨大矩阵的特征值(大小为 : 2x10^5)

python - 从非常嘈杂的二值阈值图像中过滤噪声

类中的 C++ 数组未正确初始化

c++ - 如何将库添加到 Eclipse CDT? (无此文件或目录)

matlab - 如何在 MATLAB 中平滑旋转 3D 图?

arrays - 如何在不使用循环的情况下按每个组的结束索引拆分向量?

java - 用于模板匹配的 OpenCV 读取图像

c++ - OpenCV:Orb 参数

c++ - 如何在 C++ 中将 uint64_t 转换为 const char *?

c++ - 可以向任何方向延伸的对象的二维网格 C++