这个程序使用OpenCV text模块识别词典里的单词。
首先创建了一个词典,包含abb,riser,CHINA,HERE,President,smash,KUALA,Produkt,NINTENDO。程序会输出词典里有的单词,以减少识别错误。
输入的4张图片:
运行程序后会在CMD里输出识别结果:
代码:
int main() { Mat image = imread("scenetext_word04.jpg"); string vocabulary = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; vector<string> lexicon; lexicon.push_back(string("abb")); lexicon.push_back(string("riser")); lexicon.push_back(string("CHINA")); lexicon.push_back(string("HERE")); lexicon.push_back(string("President")); lexicon.push_back(string("smash")); lexicon.push_back(string("KUALA")); lexicon.push_back(string("Produkt")); lexicon.push_back(string("NINTENDO")); Mat transition_p; createOCRHMMTransitionsTable(vocabulary,lexicon,transition_p); Mat emission_p = Mat::eye(62,62,CV_64FC1); Ptr<OCRBeamSearchDecoder> ocr = OCRBeamSearchDecoder::create( loadOCRBeamSearchClassifierCNN("OCRBeamSearch_CNN_model_data.xml.gz"), vocabulary, transition_p, emission_p, OCR_DECODER_VITERBI, 50); string output; vector<Rect> boxes; vector<string> words; vector<float> confidences; ocr->run(image, output, &boxes, &words, &confidences, OCR_LEVEL_WORD); cout<< output<< endl; }