package com.yuxue.easypr.core; import java.util.Vector; import org.bytedeco.javacpp.opencv_core.Mat; import com.yuxue.enumtype.PlateColor; /** * 字符识别 * * @author yuxue * @date 2020-04-24 15:31 */ public class CharsRecognise { private CharsSegment charsSegment = new CharsSegment(); private CharsIdentify charsIdentify = new CharsIdentify(); public void loadANN(final String s) { charsIdentify.loadModel(s); } /** * Chars segment and identify 字符分割与识别 * * @param plate: the input plate * @return the result of plate recognition */ public String charsRecognise(final Mat plate, String tempPath) { // 车牌字符方块集合 Vector matVec = new Vector(); // 车牌识别结果 String plateIdentify = ""; int result = charsSegment.charsSegment(plate, matVec, tempPath); if (0 == result) { for (int j = 0; j < matVec.size(); j++) { Mat charMat = matVec.get(j); // 默认首个字符块是中文字符 第二个字符块是字母 String charcater = charsIdentify.charsIdentify(charMat, (0 == j), (1 == j)); plateIdentify = plateIdentify + charcater; } } return plateIdentify; } /** * 是否开启调试模式 * * @param isDebug */ public void setCRDebug(final boolean isDebug) { charsSegment.setDebug(isDebug); } /** * 获取调试模式状态 * * @return */ public boolean getCRDebug() { return charsSegment.getDebug(); } /** * 获得车牌颜色 * * @param input * @return */ public final String getPlateType(final Mat input) { PlateColor result = CoreFunc.getPlateType(input, true); return result.desc; } /** * 设置柳丁大小变量 * * @param param */ public void setLiuDingSize(final int param) { charsSegment.setLiuDingSize(param); } /** * 设置颜色阈值 * * @param param */ public void setColorThreshold(final int param) { charsSegment.setColorThreshold(param); } /** * 设置蓝色百分比 * * @param param */ public void setBluePercent(final float param) { charsSegment.setBluePercent(param); } /** * 得到蓝色百分比 * * @param param */ public final float getBluePercent() { return charsSegment.getBluePercent(); } /** * 设置白色百分比 * * @param param */ public void setWhitePercent(final float param) { charsSegment.setWhitePercent(param); } /** * 得到白色百分比 * * @param param */ public final float getWhitePercent() { return charsSegment.getWhitePercent(); } }