|
|
|
@ -61,20 +61,32 @@ int CCharsRecognise::charsRecognise(CPlate& plate, std::string& plateLicense) {
|
|
|
|
|
|
|
|
|
|
if (result == 0) {
|
|
|
|
|
int num = matChars.size();
|
|
|
|
|
for (int j = 0; j < num; j++)
|
|
|
|
|
{
|
|
|
|
|
Mat charMat = matChars.at(j);
|
|
|
|
|
Mat grayChar = grayChars.at(j);
|
|
|
|
|
if (color != Color::BLUE)
|
|
|
|
|
grayChar = 255 - grayChar;
|
|
|
|
|
|
|
|
|
|
for (int j = 0; j < num; j++)
|
|
|
|
|
{
|
|
|
|
|
Mat charMat = matChars.at(j);
|
|
|
|
|
Mat grayChar = grayChars.at(j);
|
|
|
|
|
if (!charMat.empty()) {
|
|
|
|
|
imshow("charMat", charMat);
|
|
|
|
|
waitKey(0);
|
|
|
|
|
destroyWindow("charMat");
|
|
|
|
|
}
|
|
|
|
|
if (color != Color::BLUE)
|
|
|
|
|
grayChar = 255 - grayChar;
|
|
|
|
|
if (j == 0) {
|
|
|
|
|
if (!grayChar.empty()) {
|
|
|
|
|
imshow("grayChar", grayChar);
|
|
|
|
|
waitKey(0);
|
|
|
|
|
destroyWindow("grayChar");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
bool isChinses = false;
|
|
|
|
|
std::pair<std::string, std::string> character;
|
|
|
|
|
float maxVal;
|
|
|
|
|
float maxVal=0;
|
|
|
|
|
if (0 == j) {
|
|
|
|
|
isChinses = true;
|
|
|
|
|
bool judge = true;
|
|
|
|
|
character = CharsIdentify::instance()->identifyChineseGray(grayChar, maxVal, judge);
|
|
|
|
|
character = CharsIdentify::instance()->identifyChinese(charMat, maxVal, judge);
|
|
|
|
|
plateLicense.append(character.second);
|
|
|
|
|
|
|
|
|
|
// set plate chinese mat and str
|
|
|
|
@ -82,16 +94,16 @@ int CCharsRecognise::charsRecognise(CPlate& plate, std::string& plateLicense) {
|
|
|
|
|
plate.setChineseKey(character.first);
|
|
|
|
|
if (0) writeTempImage(grayChar, "char_data/" + character.first + "/chars_");
|
|
|
|
|
}
|
|
|
|
|
else if (1 == j) {
|
|
|
|
|
else if (1 == j||2 == j) {
|
|
|
|
|
isChinses = false;
|
|
|
|
|
bool isAbc = true;
|
|
|
|
|
character = CharsIdentify::instance()->identify(charMat, isChinses, isAbc);
|
|
|
|
|
character = CharsIdentify::instance()->identify(charMat, isChinses, isAbc);
|
|
|
|
|
plateLicense.append(character.second);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
isChinses = false;
|
|
|
|
|
SHOW_IMAGE(charMat, 0);
|
|
|
|
|
character = CharsIdentify::instance()->identify(charMat, isChinses);
|
|
|
|
|
character = CharsIdentify::instance()->identify(charMat, isChinses);
|
|
|
|
|
plateLicense.append(character.second);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|