AndroidLinux环境下videocapture摄像头帧数问题请教
opencv吧
全部回复
仅看楼主
level 2
lankybin 楼主
我把android底层作为opencv的运行环境,将opencv放在安卓源码里重新编译出库文件,然后编写可执行文件的方式运行opencv
我的摄像头通过cap.get(CV_CAP_PROP_FPS获取到摄像头帧数为:30FPS,但是在while里循环cap>>frame会发现每走一次while循环都会消耗66ms左右,也就是15帧。
代码结构如下:
while (1) {
// usleep(20 * 1000);
t3 = (double)cvGetTickCount();
cap >> frame;
t1 = (double)cvGetTickCount();
parseFrame();
t2 = (double)cvGetTickCount(); __android_log_print(ANDROID_LOG_INFO, "opencv", "getFrame: %f ms,\tparseFrame:%f ms,\tTotal Time>> %f ms", (t1 - t3)*1000/(getTickFrequency()),(t2 - t1)*1000/(getTickFrequency()),(t2 - t3)*1000/(getTickFrequency()));
}
parseFrame是对当前这一帧做处理,耗时25-30ms,我发现一次while循环的用时是固定的,如果我在一次while里只执行cap>>frame,那么这一句耗时就是66ms,哪怕我usleep了30ms,cap>>frame就会减少好事,while一次的总耗时依然保持在66ms左右。求大神解释,请教一下如何保持摄像头的30帧处理速度?
2020年06月11日 01点06分 1
level 2
安卓上推荐用OpenCV4Android
2020年06月17日 09点06分 2
不是java,是底层用c语言的
2020年06月17日 09点06分
@lankybin 这个也能用c的,jni了解一下
2020年06月18日 00点06分
@东方跃升 是要编译成system/bin下面的可执行文件和jni不是一码事
2020年06月18日 01点06分
@东方跃升 jni终究还是上层。
2020年06月18日 01点06分
level 2
lankybin 楼主
有谁遇到过吗?请教一下
2020年07月27日 01点07分 3
1