关于OpenCV中inputFrame.rgba().size()返回值的疑问:帧分辨率还是相机预览尺寸?
关于OpenCV中
inputFrame.rgba().size()返回值的说明 inputFrame.rgba().size()返回的是当前相机预览帧(inputFrame)的实际分辨率,这个值和相机的previewSize完全一致。
为什么它不返回setMaxFrameSize()设置的值?
原因在于setMaxFrameSize()的作用并非直接设置相机输出帧的尺寸,而是作为相机预览尺寸选择的上限过滤条件:
- 当你手动修改
previewSize后,如果该尺寸小于等于setMaxFrameSize()设定的最大值,框架会直接使用你修改后的previewSize作为相机实际输出的帧尺寸,因此rgba().size()会返回这个修改后的值。 - 只有当你尝试设置的
previewSize超过setMaxFrameSize()的限制时,框架才会从相机支持的尺寸列表中挑选一个不超过该上限的最优尺寸,作为最终的previewSize,此时rgba().size()才会对应这个调整后的尺寸。
核心逻辑验证
在CameraBridgeViewBase的实现中,相机实际输出的预览帧尺寸由previewSize决定,inputFrame是直接从相机预览流中获取的帧数据,它的rgba()方法返回的Mat对象的尺寸与预览帧完全匹配。而setMaxFrameSize()仅在初始化或重新选择预览尺寸时生效,用于过滤掉超过上限的可选尺寸,并非直接覆盖previewSize。
内容的提问来源于stack exchange,提问作者Ani
相关产品推荐
相关产品推荐

