BlurDetection.cs 986 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using OpenCvSharp;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace Metis.AutoAnalysis
  8. {
  9. /// <summary>
  10. /// 检测图片是否是虚的
  11. /// </summary>
  12. class BlurDetection
  13. {
  14. private int m_threshold = 100;
  15. private double GetLaplacianVar(Mat src)
  16. {
  17. Mat dst = new Mat();
  18. Cv2.Laplacian(src, dst, MatType.CV_64F);
  19. Cv2.MeanStdDev(dst, out var mean, out var dev);
  20. return dev.Val0 * dev.Val0;
  21. }
  22. /// <summary>
  23. /// 检测图片是否是虚的
  24. /// </summary>
  25. /// <param name="fileName"></param>
  26. /// <returns>true: 虚, false: 不虚</returns>
  27. public bool Detect(string fileName)
  28. {
  29. Mat mat = Cv2.ImRead(fileName, ImreadModes.Grayscale);
  30. var lap_var = GetLaplacianVar(mat);
  31. return lap_var < m_threshold;
  32. }
  33. }
  34. }