1.记录一个错误
在当前的使用方式下,在运行一段时间,几分钟,或者十几分钟之后出现如下错误,然后摄像头卡死了,整体程序就算是假死状态
CameraBin error: "Internal data stream error."
这个问题,没得什么头绪,度娘和谷歌都没看到有什么问题。这个问题在之前没有引入人脸检测时,是没有问题的,直到引入opencv做检测才出现。所以这里首先还是从检测部分还是入手检查,屏蔽cascade.detectMultiScale之后,程序又可正常运行,但是这里cv一般是没得什么问题的,有问题也不会影响到摄像头部分逻辑。分析了一下,初步估计是因为这个接口太耗时了,引入这个接口是map的,map和umap之间消耗接近400ms+,可能导致了什么内部资源的处理问题,才导致前面出现的错误信息。这里暂且先处理为将数据直接拷贝出来,map和unmap之间,仅仅是先做一个数据拷贝,结果还是不行。。。哎,GG了。难道是由于这里处理时间过长,不能用movetothread的方式。。。。。试一下,通过线程子类化method接口类,在run里面一直处理,通过全部变量处理值,把需要处理的frame映射之后,拷贝出来,放入全局变量,。。。结果还是不行
折腾了很久,发现是自定义的viewfinder有问题,取消之后,后面就可以了。。。暂时没找到原因,先不采用自定义的viewfinder。
2.YUV2RGB
在前面自定义的viewfinder测试中,每次通过手动YUV2RGB之后,刷label展示,发现CPU占用很高