OpenCV提供的形态学处理函数,主要有三个参数:
1:结构元:影响结构元的除了形状就是结构元的半径
2:形态学处理类型
3:迭代次数
【图像处理|OpenCV-形态学处理-morphologyEx】基于这三个点我们通过导航条调节这三个参数,代码如下:
#include
#include
#include
using namespace cv;
#include
using namespace std;
Mat img;
//输入图像
Mat dst;
//输出图像
Mat element;
//结构元
//结构元的半径
int r = 1;
int MAX_r = 20;
//形态学处理的次数
int iter = 1;
int MAX_ITER = 30;
//形态学处理类型
/*
enum MorphTypes{
MORPH_ERODE= 0,
MORPH_DILATE= 1,
MORPH_OPEN= 2,
MORPH_CLOSE= 3,
MORPH_GRADIENT = 4,
MORPH_TOPHAT= 5,
MORPH_BLACKHAT = 6,
MORPH_HITMISS= 7
};
*/
int morphType = 0;
int MAX_MORPHTYPE = 6;
//窗口
string windowName = "形态学处理";
//回调函数
void callback(int, void*);
int main(int argc, char*argv[])
{
//输入图像
img = imread(argv[1], IMREAD_ANYCOLOR);
if (!img.data)
return -1;
//窗口
namedWindow(windowName, 1);
createTrackbar("半径:", windowName, &r, MAX_r, callback);
createTrackbar("次数:", windowName, &iter, MAX_ITER, callback);
createTrackbar("类型:", windowName, &morphType, MAX_MORPHTYPE, callback);
callback(0, 0);
waitKey(0);
return 0;
}
//回调函数
void callback(int, void*)
{
//结构元
element = getStructuringElement(MORPH_ELLIPSE, Size(2 * r + 1, 2 * r + 1), Point(-1, -1));
//形态学处理
morphologyEx(img, dst, morphType, element, Point(-1, -1), iter);
//保存形态处理的结果
//imwrite("mor.jpg", dst);
imshow(windowName, dst);
}
![图像处理|OpenCV-形态学处理-morphologyEx](https://img.it610.com/image/info8/9b91f5017d5649999e932715ab1ef737.jpg)
文章图片
推荐阅读
- 人脸识别|【人脸识别系列】| 实现自动化妆
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- 前沿论文|论文精读(Neural Architecture Search without Training)
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- 爬虫|若想拿下爬虫大单,怎能不会逆向爬虫,价值过万的逆向爬虫教程限时分享