Преобразование круговой текстовой области в прямоугольную область для процесса OCR - OpenCV C++

Я хочу преобразовать круглую текстовую область в прямоугольную текстовую область для процесса OCR. Я использовал функцию logpolar() opencv. Иногда это дает хорошие результаты, но иногда текст кажется разделенным на две части в соответствии с положением области текста на круге. Процесс OCR работает хорошо (с Tesseract + OpenCV). Но моя текстовая область не находится в фиксированном положении, и текст всегда создается с 10 цифрами. Мне нужно решение, которое работает во всех возможных состояниях. объяснение проблемы:

объяснение проблемы

Я написал свой код в соответствии с этот пост. Сначала я выбрал область интереса, а затем обработал эту область интереса (позже я напишу код для фиксированного выбора области интереса). Я пробовал все возможные значения параметров с помощью трекбаров. Но результаты не очень

Пожалуйста, посмотрите мой код и другие результаты.

Хороший результат, я всегда хочу получить что-то вроде этого:

гд

Плохой результат:

бд

Плохой результат:

бд

Мой код;

int radius = 80;
int dr = 95;
logPolar(imcrop, polarr, Point2f(radius + dr, radius + dr), 30, WARP_FILL_OUTLIERS);
cv::rotate(polarr, finall, ROTATE_90_COUNTERCLOCKWISE);
resize(finall, finall, Size(640, 480));
threshold(finall, thresholded, 250, 255, THRESH_BINARY + THRESH_OTSU);

Я хочу всегда извлекать текстовую область одной частью. Как я могу решить эту проблему?


person Ahmet Anil    schedule 09.06.2018    source источник
comment
Разместите неотредактированное изображение.   -  person zindarod    schedule 09.06.2018
comment
1 найти темную область. 2 сдвиньте изображение влево на количество пикселей, на которое вы нашли темную область.   -  person Benno Geels    schedule 09.06.2018
comment
Если это не очевидно: вы нажимаете ветвь в функции угла.   -  person Davis Herring    schedule 21.12.2018