出现的问题:
代码在windows上调试运行正常,发布到树莓派和ubuntu后出现jvm虚拟机crash的情况。
目前经过群里小伙伴们的反复复现和反馈,只有在使用opencv原生api调用时可以复现虚拟机crash的情况。
出现问题的文章:
opencv图像处理系列之3:使用opencv原生方法遍历摄像头设备及调用(方便多摄像头遍历及调用,相比javacv更快的摄像头读取速度和效率,方便读取后的图像处理)
问题原因
1、可能是由于opencv的某些api没办法保证跨平台一致性
2、新版本的javacv编译的opencv库问题
解决办法
1、降低javacv版本到1.4.x版本
2、尽量避免使用原生opencv的api,尽量切换使用javacv的api来保证跨平台的一致性。
比如文中使用原生videocapture调用摄像头,可以使用OpenCVFrameGrabber grabber=new OpenCVFrameGrabber(0);
进行替代,就可以保证全平台可用。
VideoCapture vc=null;
//遍历查找摄像头
int index=-1;
for(;index<2;index++){
vc=new opencv_videoio.VideoCapture(index);