C# C语言中身份证或Pan卡的EmguCV倾斜检测#
我想用emgucv检测像身份证或Pan卡这样的图像的方向,这样我就可以校正图像并将其传递给tesseract OCR。我在谷歌上搜索过,没有找到C#中的例子 这里有谁能给我一些指导或建议一些例子吗?我们将非常感谢您的帮助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
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>。根据你的建议工作。我可以旋转图像,但它正在变成黑色。请参考有问题的代码。请建议我哪里出了问题。