当前位置:   article > 正文

基于EmguCv的圆形答题卡识别_c#答题卡扫描程序

c#答题卡扫描程序

参考:https://blog.csdn.net/qiao_lili/article/details/83176480

网上关于C#结合EmguCv开发答题卡识别的资料很少,因为有做答题卡识别方面的需求,个人也只熟悉C#语言,找了半天也只找到一些通过C++、Python或matlab结合OpenCV来实现识别的例子,只好对着别人的例子尝试着翻译成EmguCv,还算成功。自己又针对答题卡识别封装了几个函数,记录在这留给需要的人。(得吐槽下,EmguCv在错误管理上还欠缺很多,经常出现莫名其妙的错误)

1.设置两个图片显示容器

  1. ib_original.SizeMode = PictureBoxSizeMode.Zoom;
  2. ib_original.FunctionalMode = Emgu.CV.UI.ImageBox.FunctionalModeOption.Minimum;
  3. ib_result.SizeMode = PictureBoxSizeMode.Zoom;
  4. ib_result.FunctionalMode = Emgu.CV.UI.ImageBox.FunctionalModeOption.Minimum;

2.载入要处理的图片

  1. OpenFileDialog op = new OpenFileDialog();
  2. if (op.ShowDialog() == DialogResult.OK)
  3. {
  4. Mat src = new Mat(op.FileName, Emgu.CV.CvEnum.LoadImageType.AnyColor);
  5. ib_original.Image = src;
  6. }

实例图片

3.获取当前图像的最大矩形边界

  1. //获取当前图像的最大矩形边界
  2. VectorOfVectorOfPoint result_contour = GetBoundaryOfPic(src);
  3. public VectorOfVectorOfPoint GetBoundaryOfPic(Mat src)
  4. {
  5. Mat dst = new Mat();
  6. Mat src_gray = new Mat();
  7. CvInvoke.CvtColor(src, src_gray, Emgu.CV.CvEnum.ColorConversion.Bgr2Gray);
  8. //边缘检测
  9. CvInvoke.Canny(src_gray, dst, 120, 180);
  10. //寻找答题卡矩形边界(最大的矩形)
  11. VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint();//创建VectorOfVectorOfPoint数据类型用于存储轮廓
  12. CvInvoke.FindContours(dst, contours, null, Emgu.CV.CvEnum.RetrType.External,
  13. Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple);//提取轮廓
  14. VectorOfVectorOfPoint result_contour = new VectorOfVectorOfPoint();//用于存储筛选过后的轮廓
  15. int ksize = contours.Size; //获取连通区域个数
  16. if (ksize == 1)
  17. {
  18. result_contour = contours;
  19. }
  20. else
  21. {
  22. double maxLength = -1;//用于保存轮廓周长的最大值
  23. int index = -1;//轮廓周长的最大值的序号
  24. for (int i = 0; i < ksize; i++)
  25. {
  26. VectorOfPoint contour = contours[i];//获取独立的连通轮廓
  27. double length = CvInvoke.ArcLength(contour, true);//计算连通轮廓的周长
  28. if (length > maxLength)
  29. {
  30. maxLength = length;
  31. index = i;
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/812054
推荐阅读
相关标签
  

闽ICP备14008679号