我遇到过一个错误,我猜这个错误在OpenCV应用程序中很常见。当我尝试运行该应用程序时,它表示"您的设备似乎不支持相机(或已被锁定)"。我看过this和this,我已经做了他们所说的任何事情,比如授予相机权限并重启设备等等。但问题仍然存在。我知道这个问题意味着任何其他应用程序必须使用相机,因此它被锁定。当我使用可能使用相机的相机清除所有应用程序的缓存时,它只能运行一次。在同样的问题之后。解决这个问题的方法是什么?
谢谢。
答案 0 :(得分:6)
我刚刚遇到与OpenCV for Android相同的问题,并发现转到手机的 设置 - > 应用 (或类似) - > 您的应用 - > 权限 并启用Camera
权限似乎可以解决问题。
希望这有帮助。
<强>更新强>
正如@ F43nd1r在下面的评论中所述,要求用户在应用设置菜单中更新其权限不应该针对您自己的应用。应该按照https://developer.android.com/training/permissions/requesting.html要求用户允许访问摄像机/其他任何内容。
答案 1 :(得分:0)
我实际上在BlueStack中收到了这个错误,但我通过转到任务管理器并结束BlueStack的所有进程来解决它。再次启动BlueStack,它工作正常。如果您在手机上遇到此问题,也可以这样做。只需重新启动手机即可正常使用。
答案 2 :(得分:0)
编辑org.opencv.android.JavaCameraView.java并搜索
Szie frameSize = calculateCameraFrameSize(sizes, new JavaCameraSizeAccessor(), width, height);
替换为关注
Size frameSize;
if(width>height)
{
frameSize = calculateCameraFrameSize(sizes, new JavaCameraSizeAccessor(), width, height);
}
else
{
frameSize = calculateCameraFrameSize(sizes, new JavaCameraSizeAccessor(), height, width);
}
答案 3 :(得分:0)
相应于Android docs:
从Android 6.0(API级别23)开始,用户授予权限 应用程序运行时的应用程序,而非安装应用程序时的应用程序。
这意味着在新的Android设备上,您还需要请求运行时权限才能使用相机。
我使用question you mentioned所需的代码发布了答案。
检查出来:https://stackoverflow.com/a/44087946/4398784
希望它有所帮助!
答案 4 :(得分:0)
在JavaCameraView.java
(适用于Android库的opencv)中更改 143 行
Size frameSize = calculateCameraFrameSize(sizes, new JavaCameraSizeAccessor(), width, height);
到
Size frameSize = new Size(width,height);//calculateCameraFrameSize(sizes, new JavaCameraSizeAccessor(), width, height);