C# C语言中身份证或Pan卡的EmguCV倾斜检测#

C# C语言中身份证或Pan卡的EmguCV倾斜检测#,c#,.net,ocr,emgucv,pan,C#,.net,Ocr,Emgucv,Pan,我想用emgucv检测像身份证或Pan卡这样的图像的方向,这样我就可以校正图像并将其传递给tesseract OCR。我在谷歌上搜索过,没有找到C#中的例子 这里有谁能给我一些指导或建议一些例子吗?我们将非常感谢您的帮助 imgInput = new Image<Bgr, byte>(impath); Image<Gray, Byte> imggray = imgInput.Convert<Gray, Byte>(); VectorOfVectorOfP

我想用emgucv检测像身份证或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;
            }

        }
imgInput=新图像(impath);
Image imggray=imgInput.Convert();
VectorOfVectorOfPoint等高线向量=新的VectorOfVectorOfPoint()向量;
Emgu.CV.Mat hiers=新Emgu.CV.Mat();
CvInvoke.FindContours(imggray、contour、hiers、Emgu.CV.CvEnum.RetrType.External、Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple);
位图imgss;
如果(轮廓尺寸>=1)
{

对于不幸的是,我一直在努力寻找EMGUCV的文档。我经常会从2013看一些不太清楚的博客文章,并且必须修改代码以正确地使用EMGUCV的最新版本。为了弥补这一点,我经常会查看OpenCV的C++代码,只需修改其中的一部分就可以与C 0一起工作。我发现这工作得比较好,因为OpenCV C++到EMGUCV C的语法相对来说是相同的,与OpenCV Python到EMGUCV C。


基本思想是创建一个特征检测器来检测图像的相关片段,然后使用匹配器和翘曲透视来定位方向。就像前面所说的,代码是C++的,但是我应该很容易转换,其中大多数函数包含在命名空间<代码> cvUnjk> /CONT>。根据你的建议工作。我可以旋转图像,但它正在变成黑色。请参考有问题的代码。请建议我哪里出了问题。