|
|
@@ -395,8 +395,22 @@ public class VideoProcessToolNew {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- public Mat bgrFilter(Mat src, int b, int g, int r) {
|
|
|
+ public Mat timeFilter(Mat src) {
|
|
|
+ int b = 27;
|
|
|
+ int g = 145;
|
|
|
+ int r = 211;
|
|
|
+
|
|
|
+ int hmin = 28;
|
|
|
+ int hmax = 28;
|
|
|
+ int smin = 145;
|
|
|
+ int smax = 145;
|
|
|
+ int vmin = 160;
|
|
|
+ int vmax = 160;
|
|
|
+
|
|
|
Mat result = new Mat(src.rows(), src.cols(), CV_8UC1, new Scalar(0));
|
|
|
+ Mat hsvImg = new Mat();
|
|
|
+ cvtColor(src, hsvImg, COLOR_BGR2HSV);
|
|
|
+ UByteRawIndexer hsvIndexer = hsvImg.createIndexer();
|
|
|
UByteRawIndexer srcIndexer = src.createIndexer();
|
|
|
UByteRawIndexer resultIndexer = result.createIndexer();
|
|
|
for (int i = 0; i < src.rows(); i++) {
|
|
|
@@ -405,7 +419,16 @@ public class VideoProcessToolNew {
|
|
|
int dg = Math.abs(srcIndexer.get(i, j, 1) - g);
|
|
|
int dr = Math.abs(srcIndexer.get(i, j, 2) - r);
|
|
|
|
|
|
- int gray = 255 - (db + dg + dr);
|
|
|
+ int h = hsvIndexer.get(i, j, 0);
|
|
|
+ int s = hsvIndexer.get(i, j, 1);
|
|
|
+ int v = hsvIndexer.get(i, j, 2);
|
|
|
+
|
|
|
+ int dh = h > hmax ? (h - hmax) : (h < hmin ? (hmin - h) : 0);
|
|
|
+ int ds = s > smax ? (s - smax) : (s < smin ? (smin - s) : 0);
|
|
|
+ int dv = v > vmax ? (v - vmax) : (v < vmin ? (vmin - v) : 0);
|
|
|
+
|
|
|
+ int gray = 255 - (db * 0 + dg * 3 + dr * 2);
|
|
|
+ // int gray = 255 - dh * 2 - ds * 2 - dv* 2;
|
|
|
if (gray < 0) gray = 0;
|
|
|
if (gray > 255) gray = 255;
|
|
|
gray *= 1.2;
|
|
|
@@ -413,14 +436,13 @@ public class VideoProcessToolNew {
|
|
|
resultIndexer.put(i, j, gray);
|
|
|
}
|
|
|
}
|
|
|
+ hsvImg.release();
|
|
|
+ hsvIndexer.release();
|
|
|
srcIndexer.release();
|
|
|
resultIndexer.release();
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- public Mat timeFilter(Mat src) {
|
|
|
- return bgrFilter(src, 27, 129, 243);
|
|
|
- }
|
|
|
|
|
|
private String doOCR(Mat img) {
|
|
|
return doOCR(img, "pubg");
|