OpenCv之图像形态学(二)
发布人:shili8
发布时间:2025-01-21 14:59
阅读次数:0
**OpenCV 之图像形态学(二)**
在前一篇文章中,我们介绍了 OpenCV 中的基本图像处理操作,如图像读取、显示、转换等。今天我们将继续讨论 OpenCV 中的图像形态学操作,这是图像处理的一个重要方面。
**什么是图像形态学?**
图像形态学是一种数学方法,用于分析和处理二维图像中的结构特征,如点、线、边界等。它通过使用邻域运算来提取图像中不同尺寸的结构信息,从而实现图像的分割、识别等功能。
**OpenCV 中的形态学操作**
OpenCV 提供了许多形态学操作函数,包括:
* **腐蚀(Erosion)**:通过使用邻域运算来减少图像中的结构尺寸。
* **膨胀(Dilation)**:通过使用邻域运算来增加图像中的结构尺寸。
* **开运算(Opening)**:腐蚀后再膨胀,用于去除小的噪点和边界。
* **闭运算(Closing)**:膨胀后再腐蚀,用于填充小孔洞和连接断裂的结构。
###1. 腐蚀(Erosion)
腐蚀是通过使用邻域运算来减少图像中的结构尺寸。OpenCV 中提供了 `erode()` 函数来实现腐蚀操作。
cpp#includeint main() { //读取原始图像 cv::Mat src = cv::imread("image.jpg"); // 定义腐蚀核大小 int erosion_size =3; // 腐蚀操作 cv::Mat dst; cv::erode(src, dst, cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(erosion_size, erosion_size))); // 显示结果图像 cv::imshow("Erosion", dst); cv::waitKey(0); cv::destroyAllWindows(); return0; }
###2. 膨胀(Dilation)
膨胀是通过使用邻域运算来增加图像中的结构尺寸。OpenCV 中提供了 `dilate()` 函数来实现膨胀操作。
cpp#includeint main() { //读取原始图像 cv::Mat src = cv::imread("image.jpg"); // 定义膨胀核大小 int dilation_size =3; // 膨胀操作 cv::Mat dst; cv::dilate(src, dst, cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(dilation_size, dilation_size))); // 显示结果图像 cv::imshow("Dilation", dst); cv::waitKey(0); cv::destroyAllWindows(); return0; }
###3. 开运算(Opening)
开运算是通过腐蚀后再膨胀来实现的。OpenCV 中提供了 `morphologyEx()` 函数来实现开运算。
cpp#includeint main() { //读取原始图像 cv::Mat src = cv::imread("image.jpg"); // 定义腐蚀核大小 int erosion_size =3; // 定义膨胀核大小 int dilation_size =3; // 开运算操作 cv::Mat dst; cv::morphologyEx(src, dst, cv::MORPH_OPEN, cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(erosion_size, erosion_size)), cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(dilation_size, dilation_size))); // 显示结果图像 cv::imshow("Opening", dst); cv::waitKey(0); cv::destroyAllWindows(); return0; }
###4.闭运算(Closing)
闭运算是通过膨胀后再腐蚀来实现的。OpenCV 中提供了 `morphologyEx()` 函数来实现闭运算。
cpp#includeint main() { //读取原始图像 cv::Mat src = cv::imread("image.jpg"); // 定义膨胀核大小 int dilation_size =3; // 定义腐蚀核大小 int erosion_size =3; //闭运算操作 cv::Mat dst; cv::morphologyEx(src, dst, cv::MORPH_CLOSE, cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(dilation_size, dilation_size)), cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(erosion_size, erosion_size))); // 显示结果图像 cv::imshow("Closing", dst); cv::waitKey(0); cv::destroyAllWindows(); return0; }
以上就是 OpenCV 中的形态学操作函数的使用示例。通过这些函数,可以实现图像的腐蚀、膨胀、开运算和闭运算等功能,从而对图像进行处理和分析。
**参考文献**
* OpenCV 文档: />* 形态学操作函数: