用C#语言对ID卡或泛卡进行EmguCV倾斜检测。

问题描述 投票:0回答:1

我想使用emgucv来检测图像的方向,如Id卡或Pan卡,这样我就可以纠正图像,并将相同的图像传递给tesseract OCR。我在谷歌上搜索了一下,没能找到C#的例子。

有谁能指导我或建议一些例子吗?任何帮助将是非常感激的。

 imgInput = new Image<Bgr, byte>(impath);
 Image<Gray, Byte> imggray = imgInput.Convert<Gray, Byte>();
 VectorOfVectorOfPoint contour = new VectorOfVectorOfPoint();
  Emgu.CV.Mat hiers = new Emgu.CV.Mat();
   CvInvoke.FindContours(imggray, contour, hiers, Emgu.CV.CvEnum.RetrType.External, Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple);
        Bitmap imgsss;
        if (contour.Size >= 1)
        {
            for (int i = 0; i <= 1; i++)
            {
                Rectangle rect = CvInvoke.BoundingRectangle(contour[i]);

                Emgu.CV.Structure.RotatedRect box = CvInvoke.MinAreaRect(contour[i]);

                imggray.ROI = rect;


                imggray = imggray.Rotate(box.Angle, new Gray(255));
                imggray.Save(impath);
                imgsss = imggray.Copy().Bitmap;                             
                break;
            }

        }
c# .net ocr emgucv pan
1个回答
1
投票

不幸的是,我一直在努力寻找Emgucv的文档。很多时候,我会看一些2013年的晦涩的博客文章,不得不修改代码,以正确地与Emgucv的最新版本一起工作。为了弥补这一点,我经常会看opencv的c++代码,只需要修改部分代码就可以和c#一起使用。我发现这样做的效果比较好,因为从opencv c++到emgucv c#的语法相对来说是一样的,与opencv python到emgucv c#的语法是一样的。要回答你关于检测身份证和纠正方向的问题,可以看看这里的链接。

https:/www.learnopencv.comimage-alignment-feature-based-using-opencv-c-python

基本的想法是你创建一个特征检测器来检测图像的相关片段,然后使用匹配器和翘曲透视来固定方向。就像前面说的,代码是用c++写的,但我应该很容易转换,大部分函数都包含在命名空间的 CvInvoke.

© www.soinside.com 2019 - 2024. All rights reserved.