如何把ret的结果展示在前端页面 String imgPath = null; imgPath = filePath; //根据文件路劲读取 opencv_core.Mat src = opencv_imgcodecs.imread(imgPath); //单个车牌识别 String ret = plateRecognise(src); System.out.println("==================识别到的车牌" + ret);
时间: 2023-08-13 12:03:22 浏览: 151
你的问题看起来是一个代码实现的问题,不过我可以尝试回答一下。如果你想把识别到的车牌展示在前端页面上,可以考虑使用一些前端技术和框架,比如HTML、CSS、JavaScript和Vue.js等。具体的实现方式可能因为你的具体需求而有所不同,但是基本的思路是把识别到的车牌信息传递到前端页面,然后在页面上展示出来。可能需要使用一些后端技术,比如Java Web框架和Servlet等,来实现前后端之间的数据传递。如果你需要更具体的帮助,请提供更详细的信息。
相关问题
idea中具体代码实现车牌号在前端页面显示出来 String imgPath = null; imgPath = filePath; //根据文件路劲读取 opencv_core.Mat src = opencv_imgcodecs.imread(imgPath); //单个车牌识别 String ret = plateRecognise(src); System.out.println("==================识别到的车牌" + ret);
好的,下面是一个简单的实现方式,前提是你已经有了一个Java Web项目,并且在其中添加了你提供的代码。
首先,在你的Java Web项目中添加一个Servlet或者Controller,用来处理前端页面的请求。比如:
```java
@WebServlet("/plateRecognise")
public class PlateRecogniseServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取图片路径
String imgPath = request.getParameter("imgPath");
// 读取图片
opencv_core.Mat src = opencv_imgcodecs.imread(imgPath);
// 车牌识别
String ret = plateRecognise(src);
// 把识别结果存入request对象
request.setAttribute("plateNumber", ret);
// 转发到前端页面
request.getRequestDispatcher("/plateNumber.jsp").forward(request, response);
}
}
```
在上面的代码中,我们首先获取了前端页面传递过来的图片路径,然后读取图片并进行车牌识别,最后把识别结果存入request对象,转发到一个名为"plateNumber.jsp"的JSP页面上。
接下来,我们来看一下"plateNumber.jsp"页面的代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>车牌识别结果</title>
</head>
<body>
<h1>识别到的车牌号码为:<%=request.getAttribute("plateNumber")%></h1>
</body>
</html>
```
在上面的代码中,我们使用了JSP的语法,从request对象中获取到了识别结果并展示在了页面上。
最后,我们在前端页面中发起请求,把图片路径传递给后端Servlet或Controller即可。比如:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>上传图片</title>
</head>
<body>
<form action="plateRecognise" method="get">
<input type="text" name="imgPath">
<input type="submit" value="识别车牌">
</form>
</body>
</html>
```
在上面的代码中,我们使用了一个表单来上传图片,并把图片路径作为参数传递给了后端的Servlet或Controller。当用户点击"识别车牌"按钮时,会跳转到展示识别结果的页面。
以上是一个简单的实现方式,你可以根据具体需求进行修改和扩展。另外,如果你需要更加复杂的前端交互和展示,可以考虑使用Vue.js等前端框架。
改变通道数,代码如何修改public static String[] multiPlateRecognise(opencv_core.Mat mat) { PlateDetect plateDetect = new PlateDetect(); plateDetect.setPDLifemode(true); Vector<opencv_core.Mat> matVector = new Vector<opencv_core.Mat>(10); if (0 == plateDetect.plateDetect(mat, matVector)) { if (matVector.size() > 0) { //字符分割与识别 return new String[]{cr.charsRecognise(matVector.get(0))}; } } return null;public static void main(String[] args) { // 多张车牌图片路径 String[] imgPaths = {"res/image/test_image/plate_locate.jpg", "res/image/test_image/test.jpg", "res/image/test_image/plate_detect.jpg", "res/general_test/京A88731.jpg"}; int sum = imgPaths.length; // 总共处理的图片数量 int errNum = 0; // 识别错误的数量 int sumTime = 0; // 总耗时 long longTime = 0; // 最长处理时长 for (int i = 0; i < sum; i++) { opencv_core.Mat src = opencv_imgcodecs.imread(imgPaths[i]); String[] ret = multiPlateRecognise(src); long now = System.currentTimeMillis(); System.err.println(Arrays.toString(ret)); long s = System.currentTimeMillis() - now; if (s > longTime) { longTime = s; } sumTime += s; boolean flag =false;//是否有一个车牌号识别错误 for (String plate:ret) { if (plate == null) { continue; } String targetPlate = getTargetPlate(imgPaths[i]); if (!plate.equals(targetPlate)){ flag = true; break; } } if (flag) { errNum++; } } BigDecimal errSum = new BigDecimal(errNum); BigDecimal sumNum = new BigDecimal(sum); BigDecimal c = sumNum.subtract(errSum).divide(sumNum,2, RoundingMode.HALF_UP).multiply(new BigDecimal(100)); System.err.println("总耗时:" + sumTime + "ms,平均处理时长:" + sumTime/sum + "ms,错误数量:" + errNum + ",正确识别率:" + c + "%"); } }
如果要改变通道数,需要在代码中对读入的图像进行通道数的转换。假设现在要将读入的图像转换为单通道灰度图像,可以在`multiPlateRecognise`方法中添加如下代码:
```
opencv_core.Mat grayMat = new opencv_core.Mat();
opencv_imgproc.cvtColor(mat, grayMat, opencv_imgproc.COLOR_BGR2GRAY);
```
这里使用了OpenCV提供的`cvtColor`方法将BGR图像转换为灰度图像。接下来,将`grayMat`作为参数传入`PlateDetect`的`plateDetect`方法进行车牌检测和分割。最后,将字符分割得到的多张车牌图像分别传入`charsRecognise`方法进行字符识别即可。完整代码如下:
```
public static String[] multiPlateRecognise(opencv_core.Mat mat) {
PlateDetect plateDetect = new PlateDetect();
plateDetect.setPDLifemode(true);
Vector<opencv_core.Mat> matVector = new Vector<opencv_core.Mat>(10);
opencv_core.Mat grayMat = new opencv_core.Mat();
opencv_imgproc.cvtColor(mat, grayMat, opencv_imgproc.COLOR_BGR2GRAY);
if (0 == plateDetect.plateDetect(grayMat, matVector)) {
if (matVector.size() > 0) {
String[] plates = new String[matVector.size()];
for (int i = 0; i < matVector.size(); i++) {
plates[i] = cr.charsRecognise(matVector.get(i));
}
return plates;
}
}
return null;
}
```
阅读全文