opencv读取图像c#中的文本(visual studio)
大家好,我用opencv写了一个文本检测代码,但是我有一个错误,我的代码不能完整的预测。这是我的代码opencv读取图像c#中的文本(visual studio),c#,visual-studio,C#,Visual Studio,大家好,我用opencv写了一个文本检测代码,但是我有一个错误,我的代码不能完整的预测。这是我的代码 public int FindWrite() { // aimg = new IplImage(img.Size, BitDepth.U8, 1); IplImage labelImage = new IplImage(img.Size, CvBlobLib.DepthLabel, 1); labelImage = new IplImage
public int FindWrite()
{
// aimg = new IplImage(img.Size, BitDepth.U8, 1);
IplImage labelImage = new IplImage(img.Size, CvBlobLib.DepthLabel, 1);
labelImage = new IplImage(img.Size, BitDepth.U8,1);
blob = new CvBlobs();
text.Clear();
CvBlobLib.Label(labelImage,blob);
CvBlobLib.FilterByArea(blob, 600, 10000);
IplImage imgtemp = img.Clone();
// CvBlobLib.RenderBlobs(blob, img, imgtemp, RenderBlobsMode.BoundingBox | RenderBlobsMode.Angle);
// CvBlobLib.RenderBlobs(blob,img, imgtemp, RenderBlobsMode.BoundingBox | RenderBlobsMode.Angle);
CvBlobLib.RenderBlobs(blob,labelImage, imgtemp, RenderBlobsMode.BoundingBox | RenderBlobsMode.Angle);
// CvBlobLib.RenderBlobs(blob, labelImage, imgtemp, RenderBlobsMode.BoundingBox | RenderBlobsMode.Angle);
foreach (var item in blob)
{
item.Value.SetImageRoiToBlob(bimg);
// ratio values of plate between 3.5 and 5.4
double ratio = (double)item.Value.Rect.Width / item.Value.Rect.Height;
double angle = (double)item.Value.Angle();
if (ratio > 3.5 && ratio < 5.4 && angle > -15 && angle < 15)
{
IplImage texttemp = new IplImage(new CvSize(140, 27), bimg.Depth, bimg.NChannels);
Cv.Resize(bimg, texttemp);
text.Add(texttemp);
img.Rectangle(item.Value.Rect, new CvScalar(0, 0, 255), 2, LineType.Link4);
}
}
img.ResetROI();
return text.Count;
}
public int FindWrite()
{
//aimg=新IplImage(img.Size,BitDepth.U8,1);
IplImage标签图像=新IplImage(img.Size,CvBlobLib.DepthLabel,1);
labelImage=新的IplImage(img.Size,BitDepth.U8,1);
blob=新的CVBLOB();
text.Clear();
CvBlobLib.标签(标签图像,blob);
CvBlobLib.FilterByArea(blob,600,10000);
IplImage imgtemp=img.Clone();
//CvBlobLib.RenderBlobs(blob、img、imgtemp、RenderBlobsMode.BoundingBox | RenderBlobsMode.Angle);
//CvBlobLib.RenderBlobs(blob、img、imgtemp、RenderBlobsMode.BoundingBox | RenderBlobsMode.Angle);
CvBlobLib.RenderBlobs(blob、labelImage、imgtemp、RenderBlobsMode.BoundingBox | RenderBlobsMode.Angle);
//CvBlobLib.RenderBlobs(blob、labelImage、imgtemp、RenderBlobsMode.BoundingBox | RenderBlobsMode.Angle);
foreach(blob中的var项目)
{
项目值设置图像ROITOBLOB(bimg);
//板的比值介于3.5和5.4之间
双重比率=(双重)item.Value.Rect.Width/item.Value.Rect.Height;
双角度=(双)item.Value.angle();
如果(比率>3.5&&比率<5.4&&角度>-15&&角度<15)
{
IplImage texttemp=新IplImage(新CvSize(140,27),双通道深度,双通道);
Cv.调整大小(bimg、texttemp);
text.Add(texttemp);
img.Rectangle(item.Value.Rect,新的CvScalar(0,0,255),2,线型.Link4);
}
}
img.ResetROI();
返回text.Count;
}
感谢您的进步调试它时会发生什么?代码将用于每个(blob中的var项),但不会进入内部我编写了类库此项目并创建第二个项目以便使用windows窗体进行测试如果您希望我发送到我的测试项目的代码您正在标记
labelImage
,它是空的。所以你不会发现任何斑点,也不会进入循环。您确定不想这样做:CvBlobLib.Label(img,blob)代码>它与它无关,所以我结束了这句话,是发生了,但我不明白为什么