实现代码
//开运算 OpenCvSharp.Size size = new OpenCvSharp.Size(3, 3); Mat kerenl = Cv2.GetStructuringElement(MorphShapes.Rect,size); Cv2.MorphologyEx(s2,dst,MorphTypes.Open,kerenl); //开运算 Cv2.MorphologyEx(s2,dst,MorphTypes.Close,kerenl); //闭运算 Cv2.MorphologyEx(s2,dst,MorphTypes.Gradient,kerenl);//形态学梯度 Cv2.MorphologyEx(s2,dst,MorphTypes.TopHat,kerenl);//顶帽 Cv2.MorphologyEx(s2,dst,MorphTypes.BlackHat,kerenl);//黑帽形态学操作提取水平和垂直直线 步骤:
将输入的彩色图像转换为灰度图像将灰度图像转换为二值图像定义结构元素,开操作:先腐蚀后膨胀,提取水平和垂直直线。 Mat s3 = Cv2.ImRead("D:\\OpenCV\\Topencv\\CsharpOpenCv\\CsharpOpenCv\\2.png"); Mat gray3 = new Mat(s3.Size(),s3.Type()) ; Mat binImage = new Mat(s3.Size(),s3.Type()); Cv2.CvtColor(s3,gray3,ColorConversionCodes.BGR2GRAY);//灰度图像 Cv2.AdaptiveThreshold(gray3,binImage,255,AdaptiveThresholdTypes.MeanC,ThresholdTypes.Binary,15,-2);//二值图像 OpenCvSharp.Size hsize = new OpenCvSharp.Size(s3.Cols / 16, 1); OpenCvSharp.Size vsize = new OpenCvSharp.Size(1, s3.Rows/16); Mat hline = Cv2.GetStructuringElement(MorphShapes.Rect,hsize); Mat vline = Cv2.GetStructuringElement(MorphShapes.Rect,vsize); Mat tmp = new Mat(s3.Size(),s3.Type()); Mat dst = new Mat(s3.Size(),s3.Type()); Cv2.Erode(binImage,tmp,hline); Cv2.Dilate(tmp,dst,hline);