我有一個帶有 90 度文本的影像,我正在使用 tesseract 和 c# 讀取它。由于在 tesseract 中讀取旋轉文本的準確性很低,我正在圍繞文本創建一個 ROI 并旋轉 roi 以使影像的 ROI 部分筆直,然后使用 tesseract 讀取它。
總而言之 - 有一個主影像,在主影像中我正在繪制文本周圍的 ROI >> 然后我將 ROI 旋轉 90 度以使其筆直 >> 然后我正在閱讀文本 >> 然后我在每個字符周圍繪制邊界矩形。
但是我得到的邊界框就像是一個直線影像,而不是原始的 90 度 ROI。我需要在原始 ROI 上繪制邊界框。我怎么做?
這是它的外觀:

這是我希望它的外觀:

這是我用來圍繞每個字符繪制矩形的代碼:
rotatedimg = mainimg.Clone();
for (int i = 0; i <roiincrement; i )
{
rotatedimg.ROI = ROIRect[i];
rotatedimg.Rotate(90.0, new McvScalar(255,255,255); // rotating the image 0 deg to make it straight for tesseract to read
///....reading part of tesseract.
var page = tesseract.Process(rotatedimg, PageSegMode.Auto)
using (var iter = page.GetIterator()) //this parts draw the rect for each character
{
iter.Begin();
Rect symbolBounds;
do
{
if (iter.TryGetBoundingBox(PageIteratorLevel.Symbol, out symbolBounds))
{
CvInvoke.cvRectangle(resultimg, new System.Drawing.Point(ROIRect[i].X symbolBounds.X1, ROIRect[i].Y symbolBounds.Y1), new System.Drawing.Point(ROIRect[i].X symbolBounds.X2, ROIRect[i].Y symbolBounds.Y2), new MCvScalar(0, 255, 0), 1, LINE_TYPE.FOUR_CONNECTED, 0);
}
} while (iter.Next(PageIteratorLevel.Symbol));
}
}
uj5u.com熱心網友回復:
好吧,我找不到這個問題的任何合理答案,所以我走捷徑。我只是在旋轉影像以供 tesseract 讀取之前獲取影像的 ROI,然后找到輪廓并在這些輪廓周圍繪制矩形。通過這樣做,我得到了所需的邊界框。它確實增加了幾毫秒的處理時間,但并不多。
這是我現在得到的結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/449151.html
