gpt4 book ai didi

android - OpenCV 捕获的图像分辨率与 Fotoapparat

转载 作者:太空宇宙 更新时间:2023-11-03 23:08:10 26 4
gpt4 key购买 nike

我正在做一个项目,我们需要在考试中识别气泡。我们一直在根据要求测试不同的图像拍摄方法(我们需要在实时摄像机流上叠加形状),结果如下。

正如我们所见,当直接从 Fotoapparat 获取图像时,Canny 检测的效果比 OpenCV 实现要好得多。我曾尝试调整相机分辨率(通过扩展 JavaCameraView)以及其他许多东西,但它们似乎都不起作用,OpenCV 捕获总是表现不佳。

谁能指出正确的方向,让我能够以手机可用的最高分辨率从 OpenCV 捕获其中一帧?

提前致谢:)

结果:

OpenCV - 原始投资返回率

enter image description here

OpenCV - ROI 的 Canny 转换

enter image description here

Fotoapparat - 原始 ROI(压缩 31%,以便我可以上传)

enter image description here

Fotoapparat - ROI 的 Canny 转换

enter image description here

最佳答案

我终于明白了!

发生的事情是,当尝试从 OpenCV 的 onCameraFrame 中提取帧时,它默认为一个很小的分辨率(并受屏幕尺寸影响),因为它有效地截取了屏幕上的内容当时的画面。

解决方案是在我自己的实现了 JavaCameraView 的类中实现 camera.takePicture(类似于问题 here 中显示的那个),然后再拍摄图片,选择设备上可用的最高分辨率。

代码如下:

    fun takePic(jpgCallback: Camera.PictureCallback) {
val params = mCamera.parameters
params.jpegQuality = 100 //doesn't hurt to be sure

val supportedSizes = params.supportedPictureSizes
if (supportedSizes.isNullOrEmpty().not()) {
var w = 0
var h = 0
for (size in supportedSizes) {
if (size.width > w || size.height > h) {
w = size.width
h = size.height
}
}

Log.e("----", "Using largest supported size... w: $w // h: $h")
params.setPictureSize(w, h)
}
mCamera.parameters = params
mCamera.takePicture(null, null, jpgCallback)
}

关于android - OpenCV 捕获的图像分辨率与 Fotoapparat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54789262/

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