no commit message

devA
yuxue 5 years ago
parent ac93fcf13f
commit ab8318172d

@ -25,7 +25,7 @@ import com.google.common.collect.Maps;
/**
*
* ...
*
* @author yuxue
* @date 2020-05-18 12:07
*/
@ -368,26 +368,26 @@ public class ImageUtil {
/**
* minAreaRect
*
*
* 绿
* : 440mm*140mm 3.142857
* @param mr
* @return
*/
final static float DEFAULT_ERROR = 0.6f;
final static float DEFAULT_ASPECT = 3.75f;
public static final int DEFAULT_VERIFY_MIN = 3;
public static final int DEFAULT_VERIFY_MAX = 20;
final static float DEFAULT_ERROR = 0.7f; // 宽高比允许70%误差
final static float DEFAULT_ASPECT = 3.142857f;
public static final int DEFAULT_VERIFY_MIN = 1;
public static final int DEFAULT_VERIFY_MAX = 30;
/*final static float DEFAULT_ERROR = 0.9f;
final static float DEFAULT_ASPECT = 4f;
public static final int DEFAULT_VERIFY_MIN = 1;
public static final int DEFAULT_VERIFY_MAX = 30;*/
private static boolean checkPlateSize(RotatedRect mr) {
// 国内车牌大小: 440mm*140mm宽高比 3.142857
// 切图面积取值范围
int min = 44 * 14 * DEFAULT_VERIFY_MIN;
int max = 44 * 14 * DEFAULT_VERIFY_MAX;
// 切图横纵比取值范围
// 切图横纵比取值范围;关键在于纵横比例
float rmin = DEFAULT_ASPECT - DEFAULT_ASPECT * DEFAULT_ERROR;
float rmax = DEFAULT_ASPECT + DEFAULT_ASPECT * DEFAULT_ERROR;

@ -1,12 +1,58 @@
package com.yuxue.util;
import java.util.Vector;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.imgproc.Imgproc;
import org.opencv.ml.ANN_MLP;
import org.opencv.ml.SVM;
import com.yuxue.constant.Constant;
import com.yuxue.enumtype.PlateColor;
/**
*
*
*
* @author yuxue
* @date 2020-05-28 15:11
*/
public class PalteUtil {
static {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
private static SVM svm = SVM.create();
private static ANN_MLP ann=ANN_MLP.create();
public static void loadSvmModel(String path) {
svm.clear();
svm=SVM.load(path);
}
// 加载ann配置文件 图像转文字的训练库文件
public static void loadAnnModel(String path) {
ann.clear();
ann = ANN_MLP.load(path);
}
public static void main(String[] args) {
/*System.err.println(PalteUtil.isPlate("粤AI234K"));
System.err.println(PalteUtil.isPlate("鄂CD3098"));*/
System.err.println("done!!!");
}
/**
*
* @param str
@ -26,11 +72,46 @@ public class PalteUtil {
}
public static void main(String[] args) {
System.err.println(PalteUtil.isPlate("粤AI234K"));
System.err.println(PalteUtil.isPlate("鄂CD3098"));
/**
*
* @param inMat
* @param dst
*/
public static final int DEFAULT_WIDTH = 136;
public static final int DEFAULT_HEIGHT = 36;
public static void hasPlate(Vector<Mat> inMat, Vector<Mat> dst, String modelPath) {
loadSvmModel(modelPath);
inMat.stream().forEach(src -> {
if(src.rows() == DEFAULT_HEIGHT && src.cols() == DEFAULT_WIDTH) {
Imgproc.cvtColor(src, src, Imgproc.COLOR_BGR2GRAY);
Imgproc.Canny(src, src, 130, 250);
Mat samples = src.reshape(1, 1);
samples.convertTo(samples, CvType.CV_32F);
float flag = svm.predict(samples);
if (flag == 0) {
// System.out.println("目标符合");
dst.add(src);
} else {
// System.out.println("目标不符合");
}
}
});
return;
}
/**
*
* @param inMat
* @return
*/
public static PlateColor getPlateColor(Mat inMat) {
return PlateColor.UNKNOWN;
}
}

Loading…
Cancel
Save