本文共 1666 字,大约阅读时间需要 5 分钟。
膨胀和腐蚀是图像处理中的常见操作,常用于边缘检测和形状变化分析。以下是基于OpenCV的C++代码示例,展示了如何实现这些操作。
#include#include #include #include using namespace std;using namespace cv;
opencv2/opencv.hpp:OpenCV库的核心头文件,包含基本图像处理功能。opencv2/highgui/highgui.hpp:高级用户界面功能,用于创建和管理图像窗口。iostream:标准输入输出流,用于打印文本信息。math.h:用于数学函数,包括随机数生成和基本运算。void CallBack_Demo(int, void*);
int main(){ src = imread("E:\\vs2015\\opencvstudy\\3.jpg", 1); if (src.empty()){ cout << "could not load the src image!" << endl; return -1; } char *input_title = "input Image"; imshow(input_title, src); namedWindow(output_title, 1); createTrackbar("Size:", output_title, &element_size, max_size, CallBack_Demo); CallBack_Demo(0, 0); waitKey(0); return 0;} void CallBack_Demo(int, void*){ int s = element_size * 2 + 1; Mat structureElement = getStructuringElement(MORPH_RECT, Size(s,s), Point(-1, -1)); dilate(src, dst_dilate, structureElement, Point(-1, -1), 1); //erode(src, dst_erode, structureElement, Point(-1, -1), 1); imshow(output_title, dst_dilate); //imshow(output_title, dst_erode); return;} 导入库:首先导入了必要的OpenCV库和标准库,确保程序能够正常编译和运行。
读取图像:使用imread函数读取图像文件,图像以灰度格式加载。
创建窗口:使用imshow函数创建输入图像窗口,并设置输出图像窗口。
创建滑动条:使用createTrackbar函数创建滑动条,用户可以通过滑动条调整膨胀/腐蚀的尺寸。
回调函数:当滑动条调整时,回调函数被调用,执行膨胀操作。使用getStructuringElement创建结构元素,dilate函数进行膨胀操作。
膨胀:膨胀操作会使图像中的每个像素扩展成更大的区域,用于增强图像的边缘。膨胀的核心原理是求最大值,即白色部分增多。
腐蚀:腐蚀操作会使图像中的每个像素收缩成更小的区域,通常用于去除图像中的小噪声。腐蚀的核心原理是求最小值,即黑色部分增多。
通过调整这些参数,可以在图像中实现不同的膨胀和腐蚀效果。
转载地址:http://gmsfk.baihongyu.com/