当前位置:   article > 正文

嵌入式边缘计算——安卓车牌识别返回颜色_hyperlpr3.getinstance().init(this, parameter);报错

hyperlpr3.getinstance().init(this, parameter);报错

效果展示

1.导入下面这个库

 implementation 'com.github.HyperInspire:hyperlpr3-android-sdk:1.0.3'//车牌

2.代码编写

  1. private Bitmap ChePaiBitmap;//车牌图片
  2. private String ChePaiResult;//车牌结果
  3. private int Chepai_type;//车牌的类型
  4. private String Chepai_color;//车牌颜色
  5. /**
  6. * 识别车牌
  7. */
  8. //车牌识别
  9. private void ChePai() {
  10. ChePaiBitmap = null;
  11. ChePaiResult = "";
  12. Chepai_type=-1;
  13. new Thread(() -> {//开启线程
  14. Looper.prepare();
  15. ChePaiBitmap = MainActivity.INSTANCE.getBitmap();//获取当前视频流的图片,如果你这里报错,请参考我前面的文章。
  16. Log.e("图片大小", "w" + ChePaiBitmap.getWidth() + "h" + ChePaiBitmap.getHeight());
  17. //初始化车牌识别
  18. // 车牌识别算法配置参数
  19. HyperLPRParameter parameter = new HyperLPRParameter()
  20. .setDetLevel(HyperLPR3.DETECT_LEVEL_LOW)//设置识别水平
  21. .setMaxNum(3)//可更改识别的车牌数量
  22. .setRecConfidenceThreshold(0.85f);//设置精度
  23. // 初始化(仅执行一次生效)
  24. HyperLPR3.getInstance().init(this, parameter);
  25. if (ChePaiBitmap != null) {
  26. Bitmap bcopy = ChePaiBitmap.copy(Bitmap.Config.ARGB_8888, true);
  27. Plate[] plates = HyperLPR3.getInstance().plateRecognition(ChePaiBitmap, HyperLPR3.CAMERA_ROTATION_0, HyperLPR3.STREAM_BGRA);
  28. if (plates.length > 0) {
  29. Canvas canvas = new Canvas(bcopy);
  30. Paint paint = new Paint();
  31. paint.setColor(Color.RED);
  32. paint.setStyle(Paint.Style.STROKE);
  33. paint.setStrokeWidth(2.0f);
  34. StringBuilder car = new StringBuilder();
  35. StringBuilder car_color = new StringBuilder();
  36. for (Plate plate : plates) {
  37. // 打印检测到的车牌号
  38. car.append(plate.getCode().substring(1)).append("\n");
  39. Chepai_type = plate.getType();
  40. String color = Plate_color(Chepai_type);//自己定义的方法
  41. car_color.append(color).append("\n");
  42. canvas.drawRect(new android.graphics.Rect((int) plate.getX1(), (int) plate.getY1(), (int) plate.getX2(), (int) plate.getY2()), paint);
  43. }
  44. ChePaiResult = car.toString();//车牌结果
  45. ChePaiBitmap = bcopy;//框出车牌后的图片
  46. Chepai_color = car_color.toString();//车牌颜色
  47. // System.out.println(ChePaiResult);
  48. }
  49. }
  50. qrHandler.sendEmptyMessage(60);//通过handler跳出线程
  51. }).start();
  52. }

因为车牌识别需要耗时,所以为了防止代码耗时过长,需要将其放在线程中执行,完成识别后,及时跳出线程,防止在线程卡死。

2.1 Plate_color  方法的代码

  1. /**
  2. * 返回车牌的颜色
  3. * @param Chepai_type
  4. * @return
  5. */
  6. public String Plate_color(int Chepai_type){
  7. String Plate_Color="";
  8. if (Chepai_type==0){
  9. Plate_Color="蓝牌";
  10. }
  11. if (Chepai_type==1){
  12. Plate_Color="黄牌单层";
  13. }
  14. if (Chepai_type==2){
  15. Plate_Color="白牌单层";
  16. }
  17. if (Chepai_type==3){
  18. Plate_Color="绿牌新能源";
  19. }
  20. if (Chepai_type==4){
  21. Plate_Color="黑牌港澳";
  22. }
  23. if (Chepai_type==5){
  24. Plate_Color="香港单层";
  25. }
  26. if (Chepai_type==6){
  27. Plate_Color="香港双层";
  28. }
  29. if (Chepai_type==7){
  30. Plate_Color="澳门单层";
  31. }
  32. if (Chepai_type==8){
  33. Plate_Color="澳门双层";
  34. }
  35. if (Chepai_type==9){
  36. Plate_Color="黄牌双层";
  37. }
  38. if (Chepai_type==-1){
  39. Plate_Color="未知车牌";
  40. }
  41. return Plate_Color;
  42. }

如果对您有帮助,请点个赞。 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/611237
推荐阅读
相关标签
  

闽ICP备14008679号