原理:在图像边缘像素跃迁大,对图像求一阶导数,导数值最大处即为边缘像素所在位置。
相关API:
public static void Sobel(InputArray src, OutputArray dst, MatType ddepth, int xorder, int yorder, int ksize = 3, double scale = 1, double delta = 0, BorderTypes borderType = BorderTypes.Reflect101);
参数说明:
当dx=0,dy=1时候,y方向轮廓被保留明显;
当dx=1,dy=0时候,x方向轮廓被保留明显;
if (fileDialog.ShowDialog() == DialogResult.OK)
{
inputMat = Cv2.ImRead(picFile, ImreadModes.Grayscale);
outMat = new Mat(new Size(inputMat.Cols, inputMat.Rows), inputMat.Type());
Cv2.Sobel(inputMat, outMat, MatType.CV_8UC1, 1, 1,5);
picBox_Display.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(inputMat);
picBox_After.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(outMat);
}
补充说明:
本案例在.NET使用的OpenCV库为OpenCvSharp4