|
@@ -1,85 +1,132 @@
|
|
-package com.fire;
|
|
|
|
-
|
|
|
|
-import java.awt.Color;
|
|
|
|
-import java.awt.image.BufferedImage;
|
|
|
|
-import java.io.File;
|
|
|
|
-import java.io.IOException;
|
|
|
|
-
|
|
|
|
-import javax.imageio.ImageIO;
|
|
|
|
-
|
|
|
|
-public class LightingTestingTask {
|
|
|
|
-
|
|
|
|
- public static void main(String[] args) {
|
|
|
|
- String fileName = "D://tt.jpg";
|
|
|
|
- LightingTestingTask t = new LightingTestingTask();
|
|
|
|
- t.readImage(fileName);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public void readImage(String path) {
|
|
|
|
- try {
|
|
|
|
-// driver.manage().window().maximize();
|
|
|
|
- int[] rgb = new int[3];
|
|
|
|
- BufferedImage img = ImageIO.read(new File(path));
|
|
|
|
- int width = img.getWidth();
|
|
|
|
- int height = img.getHeight();
|
|
|
|
- int minx = img.getMinX();
|
|
|
|
- int miny = img.getMinY();
|
|
|
|
-
|
|
|
|
- System.out.println("width=" + width + ",height=" + height + ".");
|
|
|
|
- System.out.println("minx=" + minx + ",miniy=" + miny + ".");
|
|
|
|
- for (int i = minx; i < width; i++) {
|
|
|
|
- for (int j = miny; j < height; j++) {
|
|
|
|
-// System.out.println(i+":"+j);
|
|
|
|
- int w=20;
|
|
|
|
- int h=20;
|
|
|
|
-// if(height-j<=h && width-i>=w) {
|
|
|
|
-// //高度超出图片范围,但是宽度未超出
|
|
|
|
-//
|
|
|
|
-// }else {
|
|
|
|
-// BufferedImage rect = img.getSubimage(i, j, w, h);
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- int pixel = img.getRGB(i, j); // 下面三行代码将一个数字转换为RGB数字
|
|
|
|
-// Color c = new Color(pixel);
|
|
|
|
-// int r = c.getRed();
|
|
|
|
-// int g = c.getGreen();
|
|
|
|
-// int b = c.getBlue();
|
|
|
|
-// System.out.println(c + "\t红=" + r + "\t绿" + g + "\t蓝" + b);
|
|
|
|
-// int r1 = (pixel >> 16) & 0xFF;
|
|
|
|
-// int g1 = (pixel >> 8) & 0xFF;
|
|
|
|
-// int b1 = (pixel >> 0) & 0xFF;
|
|
|
|
-// System.out.println("红="+r1+"\t绿="+g1+"\t蓝="+b1);
|
|
|
|
- rgb[0] = (pixel & 0xff0000) >> 16;
|
|
|
|
- rgb[1] = (pixel & 0xff00) >> 8;
|
|
|
|
- rgb[2] = (pixel & 0xff);
|
|
|
|
-// if(i==539 && j==569) {
|
|
|
|
-// System.out.println("红="+rgb[0]+"\t绿="+rgb[1]+"\t蓝="+rgb[2]);
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
- if (rgb[0] != 255 || rgb[1] != 255 || rgb[2] != 255) {
|
|
|
|
-
|
|
|
|
- //红色判断
|
|
|
|
- if (rgb[0]>=230 && rgb[1] <=150 && rgb[2] <= 178) {
|
|
|
|
- System.out.println("红色i=" + i + ",j=" + j + ":(" + rgb[0] + ","
|
|
|
|
- + rgb[1] + "," + rgb[2] + ")");
|
|
|
|
- } else if (rgb[0] <= 50 && rgb[1] >= 200 && rgb[2] <= 50) {
|
|
|
|
- System.out.println("绿色i=" + i + ",j=" + j + ":(" + rgb[0] + ","
|
|
|
|
- + rgb[1] + "," + rgb[2] + ")");
|
|
|
|
- } else if (rgb[0] <= 50 && rgb[1] <= 50 && rgb[2] >= 200) {
|
|
|
|
- System.out.println("蓝色i=" + i + ",j=" + j + ":(" + rgb[0] + ","
|
|
|
|
- + rgb[1] + "," + rgb[2] + ")");
|
|
|
|
- }else if(rgb[0] >= 250 && rgb[1] <= 228 && rgb[2] <=200) {
|
|
|
|
- System.out.println("黄色i=" + i + ",j=" + j + ":(" + rgb[0] + ","
|
|
|
|
- + rgb[1] + "," + rgb[2] + ")");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- System.out.println("跑完了...");
|
|
|
|
- } catch (IOException e) {
|
|
|
|
- // TODO Auto-generated catch block
|
|
|
|
- e.printStackTrace();
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
|
|
+package com.fire;
|
|
|
|
+
|
|
|
|
+import java.awt.Color;
|
|
|
|
+import java.awt.image.BufferedImage;
|
|
|
|
+import java.io.File;
|
|
|
|
+import java.io.IOException;
|
|
|
|
+
|
|
|
|
+import javax.imageio.ImageIO;
|
|
|
|
+
|
|
|
|
+public class LightingTestingTask {
|
|
|
|
+
|
|
|
|
+ public static void main(String[] args) {
|
|
|
|
+ String fileName = "D://yellow.jpg";
|
|
|
|
+ LightingTestingTask t = new LightingTestingTask();
|
|
|
|
+ t.readImage(fileName);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void readImage(String path) {
|
|
|
|
+ try {
|
|
|
|
+// driver.manage().window().maximize();
|
|
|
|
+ int[] rgb = new int[3];
|
|
|
|
+ BufferedImage img = ImageIO.read(new File(path));
|
|
|
|
+ int width = img.getWidth();
|
|
|
|
+ int height = img.getHeight();
|
|
|
|
+ int minx = img.getMinX();
|
|
|
|
+ int miny = img.getMinY();
|
|
|
|
+
|
|
|
|
+ System.out.println("width=" + width + ",height=" + height + ".");
|
|
|
|
+ System.out.println("minx=" + minx + ",miniy=" + miny + ".");
|
|
|
|
+ int red = 0;
|
|
|
|
+ int yellow = 0;
|
|
|
|
+ int green = 0;
|
|
|
|
+ for (int i = minx; i < width; i++) {
|
|
|
|
+ for (int j = miny; j < height; j++) {
|
|
|
|
+// System.out.println(i+":"+j);
|
|
|
|
+ int w=20;
|
|
|
|
+ int h=20;
|
|
|
|
+// if(height-j<=h && width-i>=w) {
|
|
|
|
+// //高度超出图片范围,但是宽度未超出
|
|
|
|
+//
|
|
|
|
+// }else {
|
|
|
|
+// BufferedImage rect = img.getSubimage(i, j, w, h);
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ int pixel = img.getRGB(i, j); // 下面三行代码将一个数字转换为RGB数字
|
|
|
|
+// Color c = new Color(pixel);
|
|
|
|
+// int r = c.getRed();
|
|
|
|
+// int g = c.getGreen();
|
|
|
|
+// int b = c.getBlue();
|
|
|
|
+// System.out.println(c + "\t红=" + r + "\t绿" + g + "\t蓝" + b);
|
|
|
|
+// int r1 = (pixel >> 16) & 0xFF;
|
|
|
|
+// int g1 = (pixel >> 8) & 0xFF;
|
|
|
|
+// int b1 = (pixel >> 0) & 0xFF;
|
|
|
|
+// System.out.println("红="+r1+"\t绿="+g1+"\t蓝="+b1);红=254 绿=167 蓝=186
|
|
|
|
+ rgb[0] = (pixel & 0xff0000) >> 16;
|
|
|
|
+ rgb[1] = (pixel & 0xff00) >> 8;
|
|
|
|
+ rgb[2] = (pixel & 0xff);
|
|
|
|
+ //黄 红=255 绿=250 蓝=194 红=255 绿=246 蓝=191
|
|
|
|
+ //红=250 绿=248 蓝=191 红=247 绿=215 蓝=174 红=254 绿=216 蓝=179
|
|
|
|
+ //绿 红=119 绿=255 蓝=191 红=152 绿=222 蓝=188 红=141 绿=223 蓝=177 红=117 绿=253 蓝=189 红=136 绿=211 蓝=168
|
|
|
|
+
|
|
|
|
+// 绿色i=251,j=203:(117,116,114)
|
|
|
|
+// 绿色i=251,j=204:(116,115,113)
|
|
|
|
+// 绿色i=251,j=205:(115,114,112)
|
|
|
|
+// 绿色i=251,j=206:(115,114,112)
|
|
|
|
+// 绿色i=251,j=207:(115,114,112)
|
|
|
|
+// 绿色i=251,j=208:(116,115,113)
|
|
|
|
+// 绿色i=251,j=209:(115,114,112)
|
|
|
|
+// 绿色i=251,j=210:(115,114,112)
|
|
|
|
+// 绿色i=251,j=211:(115,114,112)
|
|
|
|
+// 绿色i=251,j=212:(115,114,112)
|
|
|
|
+// 绿色i=251,j=213:(116,115,113)
|
|
|
|
+// 绿色i=251,j=214:(117,116,114)
|
|
|
|
+// 绿色i=251,j=215:(119,118,116)
|
|
|
|
+
|
|
|
|
+ if(i==543 && j==483) {
|
|
|
|
+ System.out.println("红="+rgb[0]+"\t绿="+rgb[1]+"\t蓝="+rgb[2]);
|
|
|
|
+ }
|
|
|
|
+ if (rgb[0] != 255 || rgb[1] != 255 || rgb[2] != 255) {
|
|
|
|
+
|
|
|
|
+// 红色判断
|
|
|
|
+ if (rgb[0]>=244 && rgb[1] <=170 && rgb[2] <= 186) {
|
|
|
|
+ red++;
|
|
|
|
+// System.out.println("红色i=" + i + ",j=" + j + ":(" + rgb[0] + ","
|
|
|
|
+// + rgb[1] + "," + rgb[2] + ")");
|
|
|
|
+ } else if (rgb[0] <= 50 && rgb[1] >= 200 && rgb[2] <= 50) {
|
|
|
|
+// System.out.println("蓝色i=" + i + ",j=" + j + ":(" + rgb[0] + ","
|
|
|
|
+// + rgb[1] + "," + rgb[2] + ")");
|
|
|
|
+ } else if (rgb[0] >= 135 && rgb[1] >= 200 && rgb[2] >=165) {
|
|
|
|
+ green++;
|
|
|
|
+// System.out.println("绿色i=" + i + ",j=" + j + ":(" + rgb[0] + ","
|
|
|
|
+// + rgb[1] + "," + rgb[2] + ")");
|
|
|
|
+ }else if(rgb[0] >= 244 && rgb[1] >= 215 && rgb[2] >=190) {
|
|
|
|
+ yellow++;
|
|
|
|
+ System.out.println("黄色i=" + i + ",j=" + j + ":(" + rgb[0] + ","
|
|
|
|
+ + rgb[1] + "," + rgb[2] + ")");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ System.out.println("red: "+red+"yellow: "+yellow+"green: "+green);
|
|
|
|
+ String maxColor = getMaxColor(red, yellow,green);
|
|
|
|
+ if("".equals(maxColor)) {
|
|
|
|
+ return ;
|
|
|
|
+ }else if("red".equals(maxColor)) {
|
|
|
|
+ //此时是红色
|
|
|
|
+ System.out.println(maxColor);
|
|
|
|
+ }else if("yellow".equals(maxColor)){
|
|
|
|
+ System.out.println(maxColor);
|
|
|
|
+ }else if("green".equals(maxColor)){
|
|
|
|
+ System.out.println(maxColor);
|
|
|
|
+ }
|
|
|
|
+ System.out.println("跑完了...");
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
+ // TODO Auto-generated catch block
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private String getMaxColor(int red,int yellow,int green){
|
|
|
|
+ String color = "";
|
|
|
|
+ if(red>yellow && red>green) {
|
|
|
|
+ color = "red";
|
|
|
|
+ }else if(yellow>red && yellow>green) {
|
|
|
|
+ color = "yellow";
|
|
|
|
+ }else if(green>red && green>yellow) {
|
|
|
|
+ color = "green";
|
|
|
|
+ }
|
|
|
|
+ return color;
|
|
|
|
+ }
|
|
|
|
+}
|