出现的问题:

代码在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);