Browse Source

算法优化

x1ongzhu 6 năm trước cách đây
mục cha
commit
d668c18ae7

+ 9 - 3
src/main/java/com/izouma/awesomeadmin/util/VideoProcessToolNew.java

@@ -2,6 +2,7 @@ package com.izouma.awesomeadmin.util;
 
 import com.izouma.awesomeadmin.service.OSSFileService;
 import org.apache.commons.lang3.StringUtils;
+import org.bytedeco.javacpp.indexer.UByteArrayIndexer;
 import org.bytedeco.javacpp.indexer.UByteRawIndexer;
 import org.bytedeco.javacpp.tesseract;
 import org.bytedeco.javacv.FFmpegFrameGrabber;
@@ -132,11 +133,14 @@ public class VideoProcessToolNew {
     }
 
     public String extractGameTime(Mat src) {
-        imwrite("/tmp/time.jpg", src);
+        Mat out = new Mat();
+        bilateralFilter(src, out, 15, 15 * 2, 15 / 2f);
+
+        imwrite("/tmp/time.jpg", out);
         String result = null;
         int m = src.rows();
         int n = src.cols();
-        Mat roi = new Mat(src, new Range((int) (m * 0.5), (int) (m * 0.8)), new Range((int) (n * 0.5), n));
+        Mat roi = new Mat(out, new Range((int) (m * 0.5), (int) (m * 0.8)), new Range((int) (n * 0.5), n));
         Mat filtered = timeFilter(roi);
         imwrite("/tmp/time_filtered.jpg", filtered);
         Mat gray = new Mat();
@@ -156,6 +160,8 @@ public class VideoProcessToolNew {
             Rect rect = rects.get(i);
             if (i < 5) {
                 Mat txtImg = new Mat(filtered, new Range(rect.y(), rect.y() + rect.height()), new Range(rect.x(), rect.x() + rect.width()));
+                resize(txtImg, txtImg, new Size(0, 0), 3, 3, INTER_LINEAR);
+
                 String str = doOCR(txtImg);
                 txtImg.release();
                 System.out.println(str);
@@ -204,7 +210,7 @@ public class VideoProcessToolNew {
     }
 
     public Mat timeFilter(Mat src) {
-        return bgrFilter(src, 36, 183, 230);
+        return bgrFilter(src, 40, 183, 210);
     }
 
     private String doOCR(Mat img) {

BIN
src/main/resources/trainneddata/pubg.traineddata


+ 29 - 13
src/test/java/VideoProcessTest.java

@@ -7,6 +7,8 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
+import java.io.File;
+import java.nio.file.Path;
 import java.util.Map;
 
 import static org.bytedeco.javacpp.opencv_core.Mat;
@@ -69,30 +71,44 @@ public class VideoProcessTest {
 
     @Test
     public void testTime() {
-        Mat img = imread("/Users/drew/Pictures/Screenshots/2019-03-29-03-20-01-svu0rzwo-0001.jpg");
+        Mat img = imread("/Users/drew/Pictures/Screenshots/2019-04-02-04-04-58-pl8idmta-0001.jpg");
         String time = videoProcessToolNew.extractGameTime(img);
         System.out.println("time:" + time);
-
-        long ts = System.currentTimeMillis();
-        videoProcessTool.extractGameTime(img);
-        System.out.println(System.currentTimeMillis() - ts);
-
-        ts = System.currentTimeMillis();
-        videoProcessToolNew.extractRank(img);
-        System.out.println(System.currentTimeMillis() - ts);
     }
 
 
     @Test
     public void testRankFilter() {
-        Mat img = imread("/Users/drew/Pictures/Screenshots/2019-03-29-03-20-01-svu0rzwo-0001.jpg");
-        videoProcessToolNew.rankFilter(img);
+        // Mat img = imread("/Users/drew/Pictures/Screenshots/2019-03-29-03-20-01-svu0rzwo-0001.jpg");
+        // videoProcessToolNew.rankFilter(img);
+
+        String[] list = new File("/Users/drew/Desktop/1").list();
+        int i = 14;
+        for (String file : list) {
+            if (file.contains(".tif")) {
+                System.out.println(file);
+                i++;
+                Mat img = imread("/Users/drew/Desktop/1/" + file);
+                imwrite("/Users/drew/Desktop/1/" + i + ".tif", videoProcessToolNew.rankFilter(img));
+            }
+        }
     }
 
     @Test
     public void testTimeFilter() {
-        Mat img = imread("/Users/drew/Pictures/Screenshots/2019-03-29-03-20-01-svu0rzwo-0001.jpg");
-        videoProcessToolNew.timeFilter(img);
+        // Mat img = imread("/Users/drew/Pictures/Screenshots/2019-03-29-03-20-01-svu0rzwo-0001.jpg");
+        // videoProcessToolNew.timeFilter(img);
+
+        String[] list = new File("/Users/drew/Desktop/2").list();
+        int i = 0;
+        for (String file : list) {
+            if (file.contains(".png")) {
+                System.out.println(file);
+                i++;
+                Mat img = imread("/Users/drew/Desktop/2/" + file);
+                imwrite("/Users/drew/Desktop/2/" + i + ".tif", videoProcessToolNew.timeFilter(img));
+            }
+        }
     }
 
     @Test