我在使用opencv-mobile进行拍照时遇到异常

  • 您好 我们不参与 opencv-mobile 的维护,同时二次开发内容不在技术支持范围内,您的问题我们仅提供参考建议。

    从opencv-mobile 的源码上看出现 select /dev/video11 timeout 就是没有等待到设备变成可读状态获取图像流
    内存上 opencv-mobile 测试重复取图会导致 free 命令中的 shared 字段(进程间共享内存)每次增加4kb,这个是因为 /tmp/message 使用的是共享内存日志增加导致的,应该不是导致多次拍照后失败的原因。建议使用grep -i cma /proc/meminfo 查看一下 CMA 是否有成功释放,CMA是特用于摄像头和RKNN的。
    同时也存在单核CPU占用过高导致无法调度执行摄像头取流的可能,QT 本身的资源占用对于单核CPU较大
  • Crocodile wrote: 2025-08-07 2:36 您好 我们不参与 opencv-mobile 的维护,同时二次开发内容不在技术支持范围内,您的问题我们仅提供参考建议。

    从opencv-mobile 的源码上看出现 select /dev/video11 timeout 就是没有等待到设备变成可读状态获取图像流
    内存上 opencv-mobile 测试重复取图会导致 free 命令中的 shared 字段(进程间共享内存)每次增加4kb,这个是因为 /tmp/message 使用的是共享内存日志增加导致的,应该不是导致多次拍照后失败的原因。建议使用grep -i cma /proc/meminfo 查看一下 CMA 是否有成功释放,CMA是特用于摄像头和RKNN的。
    同时也存在单核CPU占用过高导致无法调度执行摄像头取流的可能,QT 本身的资源占用对于单核CPU较大
    感谢回复,我经过测试发现在使用opencv-mobile时CmaAllocated会在每次拍照后都会进行增加3000kb左右并且不会减少,请问有什么方法可以释放它们,或者有没有不使用opencv-mobile进行拍照的方案来替换现有的 opencv-mobile拍照?
    Last edited by chen on 2025-08-15 11:47, edited 1 time in total.
  • opencv-mobile 的资源释放问题只能通过分析源码解决,我们的了解有限,其他捕获图片的方案可以使用simple_vi_bind_venc_jpeg命令去捕获图像并编码为jpeg