Browse Source

init

master
diven 2 years ago
parent
commit
2b29ccafd9
  1. 2
      open-anpr-server/src/main/java/com/visual/open/anpr/server/bootstrap/conf/Knife4jConfig.java
  2. 4
      open-anpr-server/src/main/java/com/visual/open/anpr/server/controller/health/HealthController.java
  3. 19
      open-anpr-server/src/main/java/com/visual/open/anpr/server/controller/server/api/PlateControllerApi.java
  4. 29
      open-anpr-server/src/main/java/com/visual/open/anpr/server/controller/server/impl/PlateControllerImpl.java
  5. 1
      open-anpr-server/src/main/java/com/visual/open/anpr/server/controller/server/package-info.java
  6. 26
      open-anpr-server/src/main/java/com/visual/open/anpr/server/controller/server/restful/PlateController.java
  7. 39
      open-anpr-server/src/main/java/com/visual/open/anpr/server/domain/request/PlateInfoReqVo.java
  8. 8
      open-anpr-server/src/main/java/com/visual/open/anpr/server/domain/response/PlateInfoRepVo.java
  9. 12
      open-anpr-server/src/main/java/com/visual/open/anpr/server/service/api/PlateService.java
  10. 30
      open-anpr-server/src/main/java/com/visual/open/anpr/server/service/impl/PlateServiceImpl.java

2
open-anpr-server/src/main/java/com/visual/open/anpr/server/bootstrap/conf/Knife4jConfig.java

@ -30,7 +30,7 @@ public class Knife4jConfig {
.build())
.groupName("1.0.0")
.select()
.apis(RequestHandlerSelectors.basePackage("com.visual.open.anpr.server.controller.server"))
.apis(RequestHandlerSelectors.basePackage("com.visual.open.anpr.server.controller"))
.paths(PathSelectors.any())
.build();
}

4
open-anpr-server/src/main/java/com/visual/open/anpr/server/controller/health/HealthController.java

@ -10,12 +10,12 @@ import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@Api(tags="02、公共服务-健康检测")
@Api(tags="02、健康检测服务")
@RestController("healthController")
@RequestMapping("/common/health")
public class HealthController {
@ApiOperation(value="公共-服务健康检测")
@ApiOperation(value="1、健康检测服务")
@ResponseBody
@RequestMapping(value = "/check", method = RequestMethod.GET)
public ResponseInfo<String> check(){

19
open-anpr-server/src/main/java/com/visual/open/anpr/server/controller/server/api/PlateControllerApi.java

@ -0,0 +1,19 @@
package com.visual.open.anpr.server.controller.server.api;
import com.visual.open.anpr.server.domain.common.ResponseInfo;
import com.visual.open.anpr.server.domain.request.PlateInfoReqVo;
import com.visual.open.anpr.server.domain.response.PlateInfoRepVo;
import java.util.List;
public interface PlateControllerApi {
/**
* 识别车牌信息
* @param plateInfoReq
* @return
*/
public ResponseInfo<List<PlateInfoRepVo>> recognition(PlateInfoReqVo plateInfoReq);
}

29
open-anpr-server/src/main/java/com/visual/open/anpr/server/controller/server/impl/PlateControllerImpl.java

@ -0,0 +1,29 @@
package com.visual.open.anpr.server.controller.server.impl;
import com.visual.open.anpr.server.controller.base.BaseController;
import com.visual.open.anpr.server.controller.server.api.PlateControllerApi;
import com.visual.open.anpr.server.domain.common.ResponseInfo;
import com.visual.open.anpr.server.domain.request.PlateInfoReqVo;
import com.visual.open.anpr.server.domain.response.PlateInfoRepVo;
import com.visual.open.anpr.server.service.api.PlateService;
import com.visual.open.anpr.server.utils.ResponseBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
public class PlateControllerImpl extends BaseController implements PlateControllerApi {
@Autowired
private PlateService plateService;
@Override
public ResponseInfo<List<PlateInfoRepVo>> recognition(PlateInfoReqVo plateInfoReq) {
try {
return ResponseBuilder.success(plateService.recognition(plateInfoReq));
}catch (Exception e){
logger.error("plate recognition exception:", e);
return ResponseBuilder.exception(e.getMessage(), null);
}
}
}

1
open-anpr-server/src/main/java/com/visual/open/anpr/server/controller/server/package-info.java

@ -0,0 +1 @@
package com.visual.open.anpr.server.controller.server;

26
open-anpr-server/src/main/java/com/visual/open/anpr/server/controller/server/restful/PlateController.java

@ -0,0 +1,26 @@
package com.visual.open.anpr.server.controller.server.restful;
import com.visual.open.anpr.server.controller.server.impl.PlateControllerImpl;
import com.visual.open.anpr.server.domain.common.ResponseInfo;
import com.visual.open.anpr.server.domain.request.PlateInfoReqVo;
import com.visual.open.anpr.server.domain.response.PlateInfoRepVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
@Api(tags="01、车牌识别服务")
@RestController("visualPlateController")
@RequestMapping("/visual/plate")
public class PlateController extends PlateControllerImpl {
@ApiOperation(value="1、车牌识别", position = 1)
@Override
@ResponseBody
@RequestMapping(value = "/recognition", method = RequestMethod.POST)
public ResponseInfo<List<PlateInfoRepVo>> recognition(@RequestBody @Valid PlateInfoReqVo plateInfoReq) {
return super.recognition(plateInfoReq);
}
}

39
open-anpr-server/src/main/java/com/visual/open/anpr/server/domain/request/PlateInfoReqVo.java

@ -0,0 +1,39 @@
package com.visual.open.anpr.server.domain.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@ApiModel(value = "PlateInfoReqVo", description="车牌识别参数")
public class PlateInfoReqVo implements Serializable {
/**图像Base64编码值**/
@NotNull(message = "image cannot be empty")
@ApiModelProperty(value="图像Base64编码值", position = 1,required = true)
private String image;
/**搜索条数:默认5**/
@Min(value = 0, message = "limit must greater than or equal to 0")
@ApiModelProperty(value="最大搜索条数:默认5", position = 3, required = false)
private Integer limit = 5;
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public Integer getLimit() {
return limit;
}
public void setLimit(Integer limit) {
this.limit = limit;
}
}

8
open-anpr-server/src/main/java/com/visual/open/anpr/server/domain/response/PlateInfoRepVo.java

@ -0,0 +1,8 @@
package com.visual.open.anpr.server.domain.response;
import java.io.Serializable;
public class PlateInfoRepVo implements Serializable {
}

12
open-anpr-server/src/main/java/com/visual/open/anpr/server/service/api/PlateService.java

@ -1,5 +1,17 @@
package com.visual.open.anpr.server.service.api;
import com.visual.open.anpr.server.domain.request.PlateInfoReqVo;
import com.visual.open.anpr.server.domain.response.PlateInfoRepVo;
import java.util.List;
public interface PlateService {
/**
* 识别车牌信息
* @param plateInfoReq
* @return
*/
public List<PlateInfoRepVo> recognition(PlateInfoReqVo plateInfoReq);
}

30
open-anpr-server/src/main/java/com/visual/open/anpr/server/service/impl/PlateServiceImpl.java

@ -1,9 +1,16 @@
package com.visual.open.anpr.server.service.impl;
import com.visual.open.anpr.core.domain.ExtParam;
import com.visual.open.anpr.core.domain.ImageMat;
import com.visual.open.anpr.core.domain.PlateImage;
import com.visual.open.anpr.core.extract.PlateExtractor;
import com.visual.open.anpr.server.domain.request.PlateInfoReqVo;
import com.visual.open.anpr.server.domain.response.PlateInfoRepVo;
import com.visual.open.anpr.server.service.api.PlateService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
@Service("plateServiceImpl")
public class PlateServiceImpl implements PlateService {
@ -12,4 +19,27 @@ public class PlateServiceImpl implements PlateService {
private PlateExtractor plateExtractor;
@Override
public List<PlateInfoRepVo> recognition(PlateInfoReqVo plateInfoReq) {
//模型检测车牌信息
ImageMat imageMat = null;
PlateImage plateImage = null;
try {
int topK = (null == plateInfoReq.getLimit() || plateInfoReq.getLimit() <= 0) ? 5 : plateInfoReq.getLimit();
ExtParam extParam = ExtParam.build().setTopK(topK);
imageMat = ImageMat.fromBase64(plateInfoReq.getImage());
plateImage = plateExtractor.extract(imageMat, extParam, new HashMap<>());
}finally {
if(null != imageMat){
imageMat.release();
}
}
if(null == plateImage){
throw new RuntimeException("PlateExtractor extract error");
}
//转换模型结果,并输出
System.out.println(plateImage.PlateInfos().size());
return null;
}
}

Loading…
Cancel
Save