gpt4 book ai didi

安卓 OpenCV : How to slow down camera capture frame rate (purposefully)

转载 作者:太空宇宙 更新时间:2023-11-03 22:56:41 24 4
gpt4 key购买 nike

我目前正在开发一款 Android 人脸检测应用,我想知道如何有目的地降低捕获帧速率。目前它大约是 30fps,而我真正需要的是 5-10fps。这样我就不需要用完可用于其他任务的额外处理。

我想知道是否只需要一个 Thread.sleep() 就可以做到这一点,or should I look into setting it via cvSetCaptureProperty(CvCapture* capture, int property_id, double value)?我读到它只适用于某些相机,而且在大多数情况下是无用的......

我还阅读了有关设置最大帧大小的内容(例如 mOpenCvCameraView.setMaxFrameSize(640, 480);)但是...我这样做没有意义吗?..

public Mat onCameraFrame(CvCameraViewFrame inputFrame) {

mRgba = inputFrame.rgba();
mGray = inputFrame.gray();

if (mAbsoluteFaceSize == 0) {
int height = mGray.rows();
if (Math.round(height * mRelativeFaceSize) > 0) {
mAbsoluteFaceSize = Math.round(height * mRelativeFaceSize);
}
mNativeDetector.setMinFaceSize(mAbsoluteFaceSize);
}

MatOfRect faces = new MatOfRect();

if (mDetectorType == JAVA_DETECTOR) {
if (mJavaDetector != null)
mJavaDetector.detectMultiScale(mGray, faces, SCALE_FACTOR, MIN_NEIGHBOURS, 2,
new Size(mAbsoluteFaceSize, mAbsoluteFaceSize), new Size());
}
else if (mDetectorType == NATIVE_DETECTOR) {
if (mNativeDetector != null)
mNativeDetector.detect(mGray, faces);
}
else {
Log.e(TAG, "Detection method is not selected!");
}

//put thread to sleep to slow capture?
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return mRgba;
}

非常感谢任何建议!谢谢。

最佳答案

我不建议您使用 cvSetCaptureProperty(),因为它的行为非常狂想曲。

您应该将最后一帧到达(并处理)的时间戳注册到 onCameraFrame(),如果最后一个时间戳与现在的时间戳之间的差异小于 ~100 毫秒,则从事件处理程序返回。

关于安卓 OpenCV : How to slow down camera capture frame rate (purposefully),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28848383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com