Ответ 1
Нет ничего лучшего, как лучший набор. Имейте в виду, что цифровые изображения могут быть приобретены различными устройствами захвата, и каждое устройство может встроить собственную систему предварительной обработки (фильтры) и другие характеристики, которые могут радикально изменить изображение и даже добавить к ним шум. Таким образом, каждый случай должен обрабатываться (предварительно обработанный) по-разному.
Однако есть операции с сообщением, которые могут быть использованы для улучшения обнаружения, например, очень простой был бы преобразование изображения в оттенки серого и применение threshold для бинаризации изображения. Еще один метод, который я использовал ранее, - ограничивающий прямоугольник, который позволяет обнаружить область текста. Чтобы удалить шумы с изображений, вы можете быть заинтересованы в действиях по размыванию/расширению. Я демонстрирую некоторые из этих операций на этом сообщении.
Кроме того, есть другие интересные сообщения об OCR и OpenCV, которые вы должны посмотреть:
Теперь, чтобы показать вам простой подход, который можно использовать с вашим образцом, это результат инверсии цвета и применения порога:
cv::Mat new_img = cv::imread(argv[1]);
cv::bitwise_not(new_img, new_img);
double thres = 100;
double color = 255;
cv::threshold(new_img, new_img, thres, color, CV_THRESH_BINARY);
cv::imwrite("inv_thres.png", new_img);