the1dog 5 years ago
commit d38a33c6f6

@ -0,0 +1,83 @@
package com.yuxue.easypr.core;
import org.bytedeco.javacpp.BytePointer;
import org.bytedeco.javacpp.opencv_core;
import org.bytedeco.javacpp.opencv_imgproc;
import org.bytedeco.javacpp.opencv_core.Mat;
import org.bytedeco.javacpp.opencv_core.MatVector;
import com.yuxue.enumtype.PlateColor;
public class Carcolorj {
public static String colorj( Mat src) {
String colorString="";
// 转到HSV空间进行处理颜色搜索主要使用的是H分量进行蓝色与黄色的匹配工作
Mat src_hsv = new Mat();
opencv_imgproc.cvtColor(src, src_hsv, opencv_imgproc.CV_BGR2HSV);
MatVector hsvSplit = new MatVector();
opencv_core.split(src_hsv, hsvSplit);
opencv_imgproc.equalizeHist(hsvSplit.get(2), hsvSplit.get(2));
opencv_core.merge(hsvSplit, src_hsv);
int channels = src_hsv.channels();
int nRows = src_hsv.rows();
// 图像数据列需要考虑通道数的影响;
int nCols = src_hsv.cols() * channels;
int cnt=src_hsv.cols()*src_hsv.rows();
// 连续存储的数据,按一行处理
if (src_hsv.isContinuous()) {
nCols *= nRows;
nRows = 1;
}
int green,blue,black,white,yellow;
green=black=blue=white=yellow=0;
for (int i = 0; i < src_hsv.rows(); i++) {
BytePointer p = src_hsv.ptr(i);
for (int j = 0; j < src_hsv.cols(); j=j+3) {
int H = p.get(j) & 0xFF;
int S = p.get(j + 1) & 0xFF;
int V = p.get(j + 2) & 0xFF;
if (11 < H&&H <= 34 && S > 34)
yellow += 1;
else if (H>35&&H<=99&&S>34) {
green+=1;
}
else if (H>99&&H<=124&&S>34) {
blue+=1;
}
if (H>0&&H<180 && S>0&&S<225 && V>0&&V<46)
black += 1;
else if (H>0&&H<180 && S>0&&S<43 && V>221&&V<225) {
white += 1;
}
}
}
if(yellow*2>=cnt)
colorString="黄色车辆";
else if (blue*2>=cnt) {
colorString="蓝色车辆";
}
else if (green*2>=cnt) {
colorString="绿色车辆";
}
else if (white*2>=cnt) {
colorString="白色车辆";
}
else {
colorString="黑色车辆";
}
return colorString;
}
}

@ -0,0 +1,89 @@
package com.yuxue.pay;
import java.util.Scanner;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Time;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class cost {
public String cost(String str1,String str2) throws ParseException, IOException {
// Scanner scanner=new Scanner(System.in);
Date startDate;
Date endDate = null;
// readWanted readWanted=new readWanted();
// pay.readWanted.readWantedText("2020");
// System.out.print("输入开始日期yyyy-MM-dd hh:mm:ss") ;
// String str1 = scanner.nextLine();
startDate=trTime(str1);
// System.out.print("输入截止日期yyyy-MM-dd hh:mm:ss") ;
// String str2 = scanner.nextLine();
endDate=trTime(str2);
String aString=payment(startDate, endDate);
return aString;
}
private static Date trTime(String s) throws ParseException {
// 创建一个SimpleDateFormat对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 将字符串解析为日期对象
Date dd = sdf.parse(s);
return dd;
}
private static String payment(Date d1, Date d2) {
// TODO Auto-generated method stub
long year = (((d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000))) / 365;
long day = (d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000);
long hour = (((d2.getTime() - d1.getTime()) / (60 * 60 * 1000)) % 24);
long minute = (((d2.getTime() - d1.getTime()) / 1000) % 60);
long pay = getpay(year, day, hour, minute);
if (pay >= 0 & year >= 0 & day >= 0 & hour >= 0 & minute >= 0) {
// System.out.println("您已停车:");
// System.out.print(year + "年 ");
// System.out.print(day + "天 ");
// System.out.print(hour + "小时 ");
// System.out.println(minute + "分钟 ");
// System.out.println("您需要支付:\n" + pay + "元");
return ("您已停车:"+day + "天 "+hour + "小时 "+minute + "分钟 "+"您需要支付:\n" + pay + "元");
} else
return "error";
}
static long getpay(long year, long day, long hour, long minute)
//停车收费标准一天之内每小时4元小于三十分钟按半小时计算超出一天的部分
//每日40不足12小时按半日计算超出一年部分每年4000不足183天按半年计算
{
long result;
if (year == 0) {
if (day == 0) {
if (minute <= 30)
result = hour * 4 + 2;
else
result = (hour + 1) * 4;
} else {
if (hour <= 12)
result = day * 40 + 76;
else
result = day * 40 + 96;
}
} else {
if (day <= 183)
result = year * 4000 + 12656;
else
result = year * 4000 + 14656;
}
return result;
}
}

@ -0,0 +1,59 @@
package com.yuxue.pay;
import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.omg.CORBA.PRIVATE_MEMBER;
import com.yuxue.pay.cost;
public class readWanted {
public String readWantedText(String wanted) throws IOException, ParseException {
String filepath = "D:\\HDH.txt";
int count=0;// 记录次数
String last=null;
try {
FileReader fr = new FileReader(filepath);
BufferedReader br = new BufferedReader(fr);
String temp = "";// 用于临时保存每次读取的内容
while (temp != null) {
temp = br.readLine();
if (temp != null && temp.contains(wanted)) {
count++;
last=temp;
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置日期格式
String date2 = sdf.format(new Date());// new Date()为获取当前系统时间
FileWriter fWriter = new FileWriter(filepath, true);
fWriter.write(wanted + " " + date2 + "\n");
fWriter.close();
System.out.println(last);
String s5="";
if(count%2!=0)
{
String[] s1=last.split(" ");
String sdate=s1[1].concat(" "+s1[2]);
cost cost =new cost();
//计算费用
s5=cost.cost(sdate, date2);
return s5;
}
else {
return "welcome";
}
}
}
Loading…
Cancel
Save