using DlibDotNet; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Threading; namespace app { public partial class FrmMain : Form { public FrmMain() { InitializeComponent(); } /// <summary> /// Scharr算子 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnScharr_Click(object sender, EventArgs e) { // 加载图像 Mat src = Cv2.ImRead(@"img\jiang.png"); Cv2.ImShow("原图", src); Mat grad_x = new Mat(); Mat abs_grad_x = new Mat(); Cv2.Scharr(src, grad_x, MatType.CV_16S, 1, 0, 1, 0, BorderTypes.Default); Cv2.ConvertScaleAbs(grad_x, abs_grad_x); Cv2.ImShow("Scharr算子 X", abs_grad_x); Mat grad_y = new Mat(); Mat abs_grad_y = new Mat(); Mat dst = new Mat(); Cv2.Scharr(src, grad_y, MatType.CV_16S, 0, 1, 1, 0, BorderTypes.Default); Cv2.ConvertScaleAbs(grad_y, abs_grad_y); Cv2.ImShow("Scharr算子 Y", abs_grad_y); // 水平、垂直两个方向叠加的边缘信息 Mat grad_xy = new Mat(); Cv2.AddWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, grad_xy); Cv2.ImShow("Scharr算子 X + Y", grad_xy); } } }