📅  最后修改于: 2023-12-03 15:25:33.151000             🧑  作者: Mango
在计算机视觉领域中,形态转换是一种用于改变目标图像形状的方法。OpenCV提供了许多形态转换函数,包括腐蚀、膨胀、开运算、闭运算等。这些函数常用于去除图像上的噪声、填充空洞、分离不同的物体等操作,被广泛应用于图像处理、图像分割等领域。
腐蚀操作可以将图像中的边界腐蚀掉,使物体变小,减少噪声的影响。在OpenCV中,可以使用cv::erode()
函数进行腐蚀操作。
cv::Mat src = cv::imread("image.png"); // 读取图像
cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(5,5)); // 定义结构元素
cv::Mat dst;
cv::erode(src, dst, kernel); // 腐蚀操作
cv::imwrite("eroded.png", dst); // 保存结果
其中cv::getStructuringElement()
函数用于生成结构元素,cv::MORPH_RECT
参数表示矩形结构元素,cv::Size(5,5)
表示结构元素的大小。
膨胀操作与腐蚀操作相反,可以将图像中的边界扩张,使物体变大。在OpenCV中,可以使用cv::dilate()
函数进行膨胀操作。
cv::Mat src = cv::imread("image.png"); // 读取图像
cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(5,5)); // 定义结构元素
cv::Mat dst;
cv::dilate(src, dst, kernel); // 膨胀操作
cv::imwrite("dilated.png", dst); // 保存结果
开运算是腐蚀操作和膨胀操作的结合,先进行腐蚀操作再进行膨胀操作。它可以去除图像中的小噪点、填充空洞、分离连接的物体等。在OpenCV中,可以使用cv::morphologyEx()
函数进行开运算操作。
cv::Mat src = cv::imread("image.png"); // 读取图像
cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(5,5)); // 定义结构元素
cv::Mat dst;
cv::morphologyEx(src, dst, cv::MORPH_OPEN, kernel); // 进行开运算操作
cv::imwrite("opened.png", dst); // 保存结果
其中cv::MORPH_OPEN
参数表示开运算操作。
闭运算是膨胀操作和腐蚀操作的结合,先进行膨胀操作再进行腐蚀操作。它可以填充图像中的小孔洞、连接分离的物体等。在OpenCV中,可以使用cv::morphologyEx()
函数进行闭运算操作。
cv::Mat src = cv::imread("image.png"); // 读取图像
cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(5,5)); // 定义结构元素
cv::Mat dst;
cv::morphologyEx(src, dst, cv::MORPH_CLOSE, kernel); // 进行闭运算操作
cv::imwrite("closed.png", dst); // 保存结果
其中cv::MORPH_CLOSE
参数表示闭运算操作。
以上就是C++中OpenCV的形态转换的介绍和代码示例。通过这些操作可以对图像进行预处理、分割等操作,为后续的图像处理、分析打下基础。