Android 与OpenCV454,实现模式匹配,色彩空间转换,QRcode识别

模板识别训练过程使用opencv3自带的模板训练工具

主要实现了1:使用直方图方式训练模板与模板匹配,见MainActivity

2:yuv格式图像转换为RGB,对接大疆设备,见yuvConvter

3:使用opencv多二维码识别与定位,见QRActivity

Android与OpenCV454项目demo-Android文档类资源-CSDN下载

模式识别代码:
public class TargetDetec {private static TargetDetec ins=null;private static boolean CVLOADED=false;private static final   String TAG="TargetDetec";public static Context context;CascadeClassifier cascade;/**** 单例方法* @return*/public  static  TargetDetec getInstance(){if(ins==null){ins=new TargetDetec();}if(!CVLOADED){ins.initOpencv();//初始opencv}return ins;}public TargetDetec(){if(CVLOADED){initTemplate();}else{initOpencv();}}/*** 初始化opencv*/public void initOpencv(){if (!OpenCVLoader.initDebug()) {Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization");OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION, context, mLoaderCallback);} else {Log.d(TAG, "OpenCV library found inside package. Using it!");mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);}}/*** yuv 数据转换为bitmap* @param buf* @return*/public Bitmap getBitmap(byte[] buf){if(cascade==null || !CVLOADED)return  null;Mat mat=new Mat(1080,1280, CvType.CV_8UC1);mat.put(0,0,buf);Mat img=new Mat();Imgproc.cvtColor(mat,img,Imgproc.COLOR_YUV2BGR_NV21);Bitmap bmp=Bitmap.createBitmap(1280,720, Bitmap.Config.ARGB_8888);Utils.matToBitmap(img,bmp);img.release();mat.release();return  bmp;}/*** 进行检测* @param buf* @return*/public List<Point> doDetect(byte[] buf){if(cascade==null || !CVLOADED)return  null;List<Point> ps=new ArrayList<Point>();//Mat yuv=new Mat(1080,1280, CvType.CV_8UC1);yuv.put(0,0,buf);Mat rgb=new Mat();Imgproc.cvtColor(yuv,rgb,Imgproc.COLOR_YUV2BGR_NV21);MatOfRect rst = new MatOfRect();//Log.i("start",System.currentTimeMillis()+"");cascade.detectMultiScale(rgb,rst,1.1,70,0);//Log.i("end",System.currentTimeMillis()+"");List<Rect> rects=rst.toList();for (Rect r: rects ) {Point p=new Point(r.x+r.width/2,r.y+r.height/2);ps.add(p);}return  ps;}private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(context) {@Overridepublic void onManagerConnected(int status) {switch (status) {case LoaderCallbackInterface.SUCCESS:{Log.i(TAG, "OpenCV loaded successfully");CVLOADED=true;// mOpenCvCameraView.enableView();initTemplate();//必须在这里初始化opencv对象} break;default:{super.onManagerConnected(status);} break;}}};void initTemplate(){String path=getTemplate("cascade.xml");//初始化分类器cascade=new CascadeClassifier();Log.i("opencv","start load cascaed file "+path);cascade.load(path);Log.i("opencv","cascaed file load ok");}//assets文件到缓存路径private String getTemplate(String fileName){try {File cacheDir=context.getCacheDir();if (!cacheDir.exists()){cacheDir.mkdirs();}File outFile =new File(cacheDir,fileName);if (!outFile.exists()){boolean res=outFile.createNewFile();if (!res){return null;}}InputStream is=context.getAssets().open(fileName);FileOutputStream fos = new FileOutputStream(outFile);byte[] buffer = new byte[1024];int byteCount;while ((byteCount = is.read(buffer)) != -1) {fos.write(buffer, 0, byteCount);}fos.flush();is.close();fos.close();return outFile.getAbsolutePath();} catch (IOException e) {e.printStackTrace();}return null;}

色彩空间转换

public  class YuvConverter extends AppCompatActivity implements View.OnClickListener {ImageView imgview;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_yuv_converter);imgview=findViewById(R.id.img);imgview.setOnClickListener(this);//loadyuv();}@Overridepublic void onResume(){super.onResume();TargetDetec.context=this;//context 赋值进去TargetDetec.getInstance();//初始化}void loadyuv(){try {InputStream is = getAssets().open("test.yuv");Log.i("yue","size"+is.available());byte[] buffer=new byte[is.available()];is.read(buffer);/*Bitmap bmp=TargetDetec.getInstance().getBitmap(buffer);imgview.setImageBitmap(bmp);*/List<Point> ps=TargetDetec.getInstance().doDetect(buffer);if(ps!=null){Log.i("yuv test",ps.size()+" points ");}else{Log.i("yuv error","load opencv error");}}catch (Exception e){e.printStackTrace();}}@Overridepublic void onClick(View view) {loadyuv();}

Android 与OpenCV454,实现模式匹配,色彩空间转换,QRcode识别相关推荐

  1. python 颜色空间转换_python实现色彩空间转换

    目录: (一)调用转换函数实现图像色彩空间转换------ cv2.cvtColor函数 (二)色彩空间转换,利用inrange函数过滤视频中的颜色,实现跟踪某一颜色 正文: (一)调用转换函数实现图 ...

  2. OpenCv 009---色彩空间与色彩空间转换

    1 前备知识 各颜色对应的范围 2 所用到的主要OpenCv API /** @brief Converts an image from one color space to another. @pa ...

  3. python数字图像处理、色彩空间类型转换_Python+OpenCV图像处理—— 色彩空间转换...

    一.色彩空间的转换 代码如下: #色彩空间转换 import cv2 as cv def color_space_demo(img): gray = cv.cvtColor(img, cv.COLOR ...

  4. android 整数与ip地址的转换

    今天,简单讲讲android里如何把整数与ip地址进行转换. 这个很简单,在网上查找资料就找到了.这里记录一下. 1.IP地址转换为整数 将IP地址转化成整数的方法如下:      1.通过Strin ...

  5. Python+OpenCV:基于色彩空间转换的目标跟踪

    Python+OpenCV:基于色彩空间转换的目标跟踪 ######################################################################## ...

  6. Python+OpenCV:色彩空间转换

    Python+OpenCV:色彩空间转换 ############################################################################### ...

  7. 图片的色彩空间转换、简单色彩跟踪与通道分离、合并(三)

    一 图片的色彩空间转换 灰度色彩空间 单通道,取值范围[0,255] 0黑255白 RGB色彩空间(opencv中习惯用BGR) opencv中R,G,B三通道取值范围均为[0,255]. HSV/H ...

  8. OpenCV快速入门五:色彩空间转换

    一:相关api 1:imread imread(filename, cv.IMREAD_GRAYSCALE) 具体cv.imread及其使用方法和读取有中文路径的图片参考博客OpenCV学习一:图片读 ...

  9. android 获取drawable 对象,Android 实现将本地资源图片转换成Drawable的方法

    Android 实现将本地资源图片转换成Drawable的方法 发布时间:2020-11-06 16:37:09 来源:亿速云 阅读:255 作者:Leah 这篇文章将为大家详细讲解有关Android ...

最新文章

  1. 高糊视频秒变4K,速度快了9倍!东南大学提出新的视频超分辨率系统
  2. Easyui 让DataGrid适应浏览器宽度
  3. python求13号是星期几的次数_Python简单计算给定某一年的某一天是星期几示例
  4. linux运shell 出现commond vim_有了这个神器,再也不怕shell写得不对了
  5. linux运行脚本报错:/bin/bash^M: bad interpreter: No such file or directory(dos2unix )(/bin/sh^M)(回车符、换行符)
  6. raid配置ssd为缓存_超融合硬件选配推荐指南 | 第三期:SSD 与 HDD
  7. webpack打包VUE项目读取外部配置文件,灵活配置域名
  8. 关于数字签名简要原理
  9. Fuschia 是什么样的一个操作系统
  10. php大小写转换,php中字母大小写转换函数
  11. 第一部分:基础知识(第一章)XAP 就是 ZIP
  12. 百度文库解决复制问题
  13. “拼多多”被薅的问题出在哪儿?损失将如何买单?
  14. Oracle数据库大作业
  15. Praat脚本-004 | 替换标注内容
  16. 设计模式中的撩妹神技--下篇
  17. 使用echarts完成中国省市区县镇地图展示
  18. 如何适配处理iphoneX底部的横条 ?(转)
  19. MAX708SCUA
  20. google play连接超时_Google框架一键安装

热门文章

  1. 教你统计日留存、周留存、月留存率更准确的方法。
  2. 记一次oom_kill的排查
  3. Swift-UITableView快捷创建(刨坟用)
  4. 系统集成项目管理工程师(软考中级)—— 第二十五章 法律法规(补充) 笔记分享
  5. 【VBA】给单元格设置背景色
  6. dft对称性 matlab实验,数字信号处理实验 matlab版 离散傅里叶变换的性质
  7. 苹果财报揭露四大秘密 万亿市值只差1%
  8. (Mimics、ANSYS)医学三维重建
  9. Go 语言重要知识点:字符串、UTF-8 编码、rune
  10. 好不好用户说了算,看OPPO R11如何赢得一致好评?