|
|
@@ -37,7 +37,7 @@ import static org.bytedeco.javacpp.tesseract.PSM_SINGLE_LINE;
|
|
|
|
|
|
public class VideoProcessToolNew {
|
|
|
private OSSFileService ossFileService = new OSSFileService();
|
|
|
- public String imgPrefix = "/tmp/";
|
|
|
+ public String imgPrefix = "/tmp/";
|
|
|
|
|
|
public VideoProcessResult processVideo(String path, int frameSkip) throws FrameGrabber.Exception {
|
|
|
SVM svm = SVM.load(GetResource.class.getClassLoader().getResource("trainneddata/pubg.xml").getPath());
|
|
|
@@ -84,9 +84,9 @@ public class VideoProcessToolNew {
|
|
|
}
|
|
|
filtered.release();
|
|
|
if (result.getRank() != null
|
|
|
- && result.getTotal() != null
|
|
|
- && result.getLiveTime() != null
|
|
|
- && result.getScore() != null) {
|
|
|
+ && result.getTotal() != null
|
|
|
+ && result.getLiveTime() != null
|
|
|
+ && result.getScore() != null) {
|
|
|
try {
|
|
|
double score = result.getScore();
|
|
|
double total = result.getTotal();
|
|
|
@@ -118,7 +118,7 @@ public class VideoProcessToolNew {
|
|
|
return result.isValid() ? result : null;
|
|
|
}
|
|
|
|
|
|
- public VideoProcessResult getKill3Time(String path, int frameSkip) throws FrameGrabber.Exception {
|
|
|
+ public VideoProcessResult getKill3Time(String path, int frameSkip, int needKill) throws FrameGrabber.Exception {
|
|
|
SVM svm = SVM.load(GetResource.class.getClassLoader().getResource("trainneddata/pubg.xml").getPath());
|
|
|
VideoProcessResult result = new VideoProcessResult();
|
|
|
OpenCVFrameConverter.ToMat converterToMat = new OpenCVFrameConverter.ToMat();
|
|
|
@@ -146,11 +146,14 @@ public class VideoProcessToolNew {
|
|
|
Mat frame = removeBlackBarAndRotate(converterToMat.convert(vFrame));
|
|
|
Mat filtered = new Mat();
|
|
|
bilateralFilter(frame, filtered, 25, 25 * 2, 25 / 2f);
|
|
|
- if (getKillNum(filtered) >= 3) {
|
|
|
+
|
|
|
+ int killNumber = getKillNum(filtered);
|
|
|
+ if (killNumber >= needKill) {
|
|
|
String filename = "/var/samples/" + DateFormatUtils.format(new Date(), "yyyyMMddHHmmss") + RandomStringUtils.randomNumeric(8) + ".jpg";
|
|
|
org.bytedeco.javacpp.opencv_imgcodecs.imwrite(filename, frame);
|
|
|
result.setImage(uploadImage(frame));
|
|
|
result.setKill3time(ts);
|
|
|
+ result.setKillNum(killNumber);
|
|
|
break;
|
|
|
}
|
|
|
frame.release();
|
|
|
@@ -239,8 +242,8 @@ public class VideoProcessToolNew {
|
|
|
dv = 238 - v;
|
|
|
}
|
|
|
int gray = (int) (255 - Math.min(255, dh * 50)
|
|
|
- - Math.min(255, ds * 3)
|
|
|
- - Math.min(255, dv * 10));
|
|
|
+ - Math.min(255, ds * 3)
|
|
|
+ - Math.min(255, dv * 10));
|
|
|
gray = gray < 0 ? 0 : gray;
|
|
|
// int gray = (h == 26 && Math.abs(s - S) < 50) ? 255 : 0;
|
|
|
filteredIndexer.put(i, j, gray);
|
|
|
@@ -468,7 +471,7 @@ public class VideoProcessToolNew {
|
|
|
filtered.release();
|
|
|
roi.release();
|
|
|
if (Pattern.matches("((^([0-9]+[.][0-9]*))|(^\\d{1,2}))分钟", map.get("参赛时间")) &&
|
|
|
- Pattern.matches("((^([0-9]+[.][0-9]+)$)|(^\\d{1,2})$)", map.get("评分"))) {
|
|
|
+ Pattern.matches("((^([0-9]+[.][0-9]+)$)|(^\\d{1,2})$)", map.get("评分"))) {
|
|
|
try {
|
|
|
double score = Double.parseDouble(map.get("评分"));
|
|
|
double time = Double.parseDouble(map.get("参赛时间").replace("分钟", ""));
|
|
|
@@ -571,9 +574,9 @@ public class VideoProcessToolNew {
|
|
|
for (Rect rect : rects) {
|
|
|
int rowStart = (img.rows() - rect.height()) / 2;
|
|
|
filtered2.rowRange(new Range(rect.y(), rect.y() + rect.height()))
|
|
|
- .colRange(new Range(rect.x(), rect.x() + rect.width()))
|
|
|
- .copyTo(img.rowRange(rowStart, rowStart + rect.height())
|
|
|
- .colRange(colStart, colStart + rect.width()));
|
|
|
+ .colRange(new Range(rect.x(), rect.x() + rect.width()))
|
|
|
+ .copyTo(img.rowRange(rowStart, rowStart + rect.height())
|
|
|
+ .colRange(colStart, colStart + rect.width()));
|
|
|
colStart += rect.width();
|
|
|
}
|
|
|
filtered2.release();
|
|
|
@@ -659,16 +662,16 @@ public class VideoProcessToolNew {
|
|
|
|
|
|
private void dilate(Mat src, Mat dst, float dilation_size) {
|
|
|
Mat dilationElement = getStructuringElement(MORPH_ELLIPSE,
|
|
|
- new Size((int) (2 * dilation_size + 1), (int) (2 * dilation_size + 1)),
|
|
|
- new Point((int) dilation_size, (int) dilation_size));
|
|
|
+ new Size((int) (2 * dilation_size + 1), (int) (2 * dilation_size + 1)),
|
|
|
+ new Point((int) dilation_size, (int) dilation_size));
|
|
|
opencv_imgproc.dilate(src, dst, dilationElement);
|
|
|
dilationElement.release();
|
|
|
}
|
|
|
|
|
|
private void erode(Mat src, Mat dst, float erosion_size) {
|
|
|
Mat erodeElement = getStructuringElement(MORPH_RECT,
|
|
|
- new Size((int) (2 * erosion_size + 1), (int) (2 * erosion_size + 1)),
|
|
|
- new Point((int) erosion_size, (int) erosion_size));
|
|
|
+ new Size((int) (2 * erosion_size + 1), (int) (2 * erosion_size + 1)),
|
|
|
+ new Point((int) erosion_size, (int) erosion_size));
|
|
|
opencv_imgproc.erode(src, dst, erodeElement);
|
|
|
erodeElement.release();
|
|
|
}
|