「Java接受uvc」java接受字符串输入

博主:adminadmin 2022-12-10 04:57:06 71

本篇文章给大家谈谈Java接受uvc,以及java接受字符串输入对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

UVC Camera使用简单记录

程序是根据 UVCCamera 去修改的。

使用过程中遇到的几点关键问题:

1.YUV 格式:NV21等格式。

2.YUV转RGB效率问题。

3.Bitmap内存泄漏问题。

4.Handler内存泄漏的问题

首先onFrame(这是camera取图的callBack函数,byte[] data就是camera的数据)中不能做耗时操作(例如将data转bitmap等操作),不然会阻塞(之前把这个操作放到这里然后直接将bitmap传出)导致卡顿。

在传输byte[]数据之后,需要将byte[]转bitmap。

在byte[] 转bitmap的过程中,由于创建了过多的Bitmap,会导致内存泄漏,程序崩溃。

因此1.将Bitmap设置为静态变量,避免重复创建的问题。2.修改byte[] 转bitmap的函数,原来函数是返回Bitmap,现在是将Bitmap作为参数传入函数中,直接将Bitmap数据传递出去。减少了一个返回的步骤。

之前是这样的:

现在是这样的:

后面就是通过handleImage将Bitmap显示在ImageView上。

NV21转bitmap的问题。

我的程序基本是根据 UVCCamera 去修改的,UVCCamera中没有取每一帧,但是留有接口,我这里设定每一帧的数据为NV21格式。

并且在onFrame中取出的data格式是NV21(NV21是YUV中的一个,YUV有很多格式),因此在转成bitmap的时候,需要根据公式去转化。用系统自带的RenderScript去转换,发现图片虽然清晰但是颜色不对。

查找yuv转bitmap函数,找到的是这个。依旧是转出来的图片,非常明显,成像很清晰,但是就是颜色不对。

因此对函数进行了修改。修改后如下所示。

由于对YUV与RGB这个概念模糊不清,而搜索得到的YUV转bitmap函数是虽然的确是NV21转bitmap,但转换后有色差。后修改rgba[]的赋值顺序后,颜色才正常。其实就是在由YUV编码转RGB编码的过程中,数据传递出现问题才导致色彩异常,这种情况就需要一步步分析YUV到RGB的数据转换中哪里出现了问题。之前是存储为ABGR,后面才是存储为ARGB。

具体分析可以看这篇:

RGB和YUV简单学习记录

但是上面这种方式实际使用中发现效率过低。因此需要使用so的方式去转换。

具体参考链接:

libyuv—libyuv测试使用ARGBToI420和ConvertToARGB接口

但是这个是yuvI420 数据转为bitmap 。我在使用的时候需要对format进行修改。

即将void Java_com_example_libyuv_Test_convertToArgb函数中的FOURCC_IYUV改为FOURCC_NV21。

Handle内存泄漏的问题。

之前因为想偷懒所以没有处理Android studio关于Handle内存泄漏的提示。然后让程序跑了一天果然崩了。

之前是如下所示,这种写法Android Studio会提示你这是有风险的。

现在改成如下所示

其实还可通过在activity的destroy中调用 handler.removeCallbacksAndMessages(null) ,来达到避免内存泄漏的目的,android 系统源码中也基本是使用这个方法。

后记:这篇文章始于2018年,当时是用于双目USB摄像头上,最近在整理东西所以完善了一下。

参考链接:

Android yuv转换成bitmap

图文详解YUV420数据格式

Android中的YUV格式解析

Nv21转Bitmap(高效率转化)

Android 之 Bitmap

Android解惑之Handler为什么需要是static的

uvc杀菌是什么意思?

UVC是短波灭菌紫外线。

适用范围:紫外线消毒杀菌用途很广,医院、学校、托儿所、电影院、公交车、办公室、家庭等,它能净化空气,消除霉味,此外还能产生一定量的负氧离子,经紫外线消毒的房间,空气特别清新。在公共场合,经紫外线消毒,可避免一些病菌经空气传播或经物体表面传播。

扩展资料: 

由于设备尺寸要求,一般照射时间只有几秒,因此,灯管的UVC输出强度就成了衡量紫外光消毒设备性能最主要的参数。在城市污水消毒中,一般平均照射剂量在300 J/m2以上。低于此值,有可能出现光复活现象,即病菌不能被彻底杀死。

当从渠道中流出接受可见光照射后,重新复活,降低了杀菌效果。杀菌效率要求越高,所需的照射剂量越大。影响微生物接受到足够紫外光照射剂量的主要因素是透光率(254 nm处),当UVC输出强度和照射时间一定时,透光率的变化将造成微生物实际接受剂量的变化。

参考资料来源:百度百科-紫外线杀菌灯

Android Studio如何配置UVC类

重新检查下JAVA_HOME,PATH,CLASSPATH。。我安装android Studio的时候也出现过你这情况,设置好了JAVA_HOME,PATH,CLASSPATH之后就能启动了重新检查下JAVA_HOME,PATH,CLASSPATH。。我安装android Studio的时候也出现过你这情况,设置好了JAVA_HOME,PATH,CLASSPATH之后就能启动了重新检查下JAVA_HOME,PATH,CLASSPATH。。我安装android Studio的时候也出现过你这情况,设置好了JAVA_HOME,PATH,CLASSPATH之后就能启动了重新检查下JAVA_HOME,PATH,CLASSPATH。。我安装android Studio的时候也出现过你这情况,设置好了JAVA_HOME,PATH,CLASSPATH之后就能启动了重新检查下JAVA_HOME,PATH,CLASSPATH。。我安装android Studio的时候也出现过你这情况,设置好了JAVA_HOME,PATH,CLASSPATH之后就能启动了重新检查下JAVA_HOME,PATH,CLASSPATH。。我安装android Studio的时候也出现过你这情况,设置好了JAVA_HOME,PATH,CLASSPATH之后就能启动了55555555666666666

Java接受uvc的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java接受字符串输入、Java接受uvc的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-10,除非注明,否则均为首码项目网原创文章,转载请注明出处。