这个程序使用OpenCV text模块使用knn模型识别掩模mask里的字符。
原始图片:
把原始图片处理成mask:
把mask输入到程序里进行识别:
代码:
int main() { Mat mask = imread("scenetext_segmented_word01_mask.png", 0); threshold(mask, mask, 128., 255, THRESH_BINARY); string voc = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; Mat emissionProbabilities = Mat::eye((int)voc.size(), (int)voc.size(), CV_64FC1); Mat transitionProbabilities; FileStorage fs("./OCRHMM_transitions_table.xml",FileStorage::READ); fs["transition_probabilities"] >> transitionProbabilities; Ptr<OCRHMMDecoder> ocr=OCRHMMDecoder::create( loadOCRHMMClassifierNM("./OCRHMM_knn_model_data.xml.gz"), voc, transitionProbabilities, emissionProbabilities); string output; ocr->run(mask, output); cout <<output<< endl; }OpenCV text模块里有提供OCRHMM_knn_model_data.xml.gz和OCRHMM_transitions_table.xml