在 C++ 中使用 OpenCV 进行形态学处理时,常用的操作包括:
1.腐蚀(Erosion):减小图像中的物体,去除小的噪声。
cv::erode(src, dst, kernel);
2.膨胀(Dilation):增大图像中的物体,填补小的孔洞。
cv::dilate(src, dst, kernel);
3.开运算(Opening):先腐蚀后膨胀,去除小的噪声。
cv::morphologyEx(src, dst, cv::MORPH_OPEN, kernel);
4.闭运算(Closing):先膨胀后腐蚀,填补小的孔洞。
cv::morphologyEx(src, dst, cv::MORPH_CLOSE, kernel);
5.形态学梯度(Morphological Gradient):计算膨胀和腐蚀之间的差异,强调边缘。
cv::morphologyEx(src, dst, cv::MORPH_GRADIENT, kernel);
6.顶帽运算(Top Hat):原图与开运算的结果之间的差。
cv::morphologyEx(src, dst, cv::MORPH_TOPHAT, kernel);
7.黑帽运算(Black Hat):闭运算的结果与原图之间的差。
cv::morphologyEx(src, dst, cv::MORPH_BLACKHAT, kernel);
在这些操作中,kernel 是一个结构元素,定义了形态学操作的形状和大小。
可以使用 cv::getStructuringElement() 来生成不同形状的结构元素,如矩形、椭圆和交叉形。