基于Opencv实现车牌图片识别系统

文章详细描述了一个使用SpringBoot框架开发的服务,涉及文件操作、图片处理(包括临时文件管理、车牌识别)、数据库操作(PlateFileEntity和TempPlateFileEntity映射器)以及一些辅助工具如GenerateIdUtil和PlateUtil。主要功能包括文件信息刷新、图片识别和类型服务接口实现。
摘要由CSDN通过智能技术生成

import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Propagation;

import org.springframework.transaction.annotation.Transactional;

import com.alibaba.druid.util.StringUtils;

import com.alibaba.fastjson.JSONObject;

import com.google.common.collect.Lists;

import com.google.common.collect.Maps;

import com.google.common.collect.Sets;

import com.yuxue.constant.Constant;

import com.yuxue.entity.PlateFileEntity;

import com.yuxue.entity.TempPlateFileEntity;

import com.yuxue.enumtype.PlateColor;

import com.yuxue.mapper.PlateFileMapper;

import com.yuxue.mapper.TempPlateFileMapper;

import com.yuxue.service.PlateService;

import com.yuxue.util.FileUtil;

import com.yuxue.util.GenerateIdUtil;

import com.yuxue.util.PlateUtil;

@Service

public class PlateServiceImpl implements PlateService {

@Autowired

private PlateFileMapper plateFileMapper;

@Autowired

private TempPlateFileMapper tempPlateFileMapper;

static {

System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

}

@Override

@Transactional(propagation = Propagation.REQUIRED)

public Object refreshFileInfo() {

File baseDir = new File(Constant.DEFAULT_DIR);

if(!baseDir.exists() || !baseDir.isDirectory()) {

return null;

}

List resultList = Lists.newArrayList();

// 获取baseDir下第一层级的目录, 仅获取文件夹,不递归子目录,遍历

List folderList = FileUtil.listFile(baseDir, “;”, false);

folderList.parallelStream().forEach(folder -> {

if(!folder.getName().equals(“temp”)) {

// 遍历每一个文件夹, 递归获取文件夹下的图片

List imgList = FileUtil.listFile(folder, Constant.DEFAULT_TYPE, true);

if(null != imgList && imgList.size() > 0) {

imgList.parallelStream().forEach(n->{

TempPlateFileEntity entity = new TempPlateFileEntity();

entity.setFilePath(n.getAbsolutePath().replaceAll(“\\”, “/”));

entity.setFileName(n.getName());

entity.setFileType(n.getName().substring(n.getName().lastIndexOf(“.”) + 1));

resultList.add(entity);

});

}

}

});

tempPlateFileMapper.turncateTable();

tempPlateFileMapper.batchInsert(resultList);

tempPlateFileMapper.updateFileInfo();

return 1;

}

@Override

public Object recognise(String filePath, boolean reRecognise) {

filePath = filePath.replaceAll(“\\”, “/”);

File f = new File(filePath);

PlateFileEntity entity = null;

Map<String, Object> paramMap = Maps.newHashMap();

paramMap.put(“filePath”, filePath);

List list= plateFileMapper.selectByCondition(paramMap);

if(null == list || list.size() <= 0) {

if(FileUtil.checkFile(f)) {

entity = new PlateFileEntity();

entity.setFileName(f.getName());

entity.setFilePath(f.getAbsolutePath().replaceAll(“\\”, “/”));

entity.setFileType(f.getName().substring(f.getName().lastIndexOf(“.”) + 1));

plateFileMapper.insertSelective(entity);

}

reRecognise = true;

} else {

entity = list.get(0);

}

if(reRecognise || StringUtils.isEmpty(entity.getTempPath())) {

doRecogn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值