У меня проблемы с OpenCV
java, чисто получающей изображение из видеопотока с карты видеозахвата.До сих пор ни один другой совет здесь не помог мне (я провел целый день, просматривая его).Каждый раз он возвращает испорченное или пустое изображение, поэтому я подозреваю проблемы с частотой кадров, хотя я могу использовать ffmpeg
для его чистого изображения (по проектным причинам я настоятельно предпочитаю это в Java).И ffmpeg
, и opencv
сообщают, что они захватывают в 30 fps
и используют формат YUYV
через v4l2
.Мой код:
Mat frame = new Mat();
VideoCapture camera = new VideoCapture(0);
int fcc = VideoWriter.fourcc('Y', 'U', 'Y', 'V');
System.out.println(camera.get(Videoio.CAP_PROP_FPS)+
" "+camera.get(Videoio.CAP_PROP_FOURCC)+" "+fcc);
wait_for(10000);//wrapper for TimeUnit.MILLISECONDS.sleep()
while (!camera.isOpened()){//this part never runs
wait_for(50);
if(c++>500){
break;
}
}
while (true) {
if (camera.read(frame)) {
if(Core.sumElems(nframe).val[0]>Math.pow(10, 4)){
Imgcodecs.imwrite("/home/ewinship/testimg.jpg", frame);
break;
}
}
}