标签: camera

Android - 相机预览是侧面的

我正在使用预览来显示相机在屏幕上看到的内容.

我可以使一切工作正常,表面创建,表面设置和表面显示.

但是,在纵向模式下,它始终以不正确的90度角显示图像.

如图中所示:

替代文字

我知道使用以下代码将直接设置图片:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Run Code Online (Sandbox Code Playgroud)

但是我在Activity中有预览,其中包含其他元素,并且我的Activity在横向模式下显示没有意义.(默认禁用)

所以我想知道是否只是改变预览的方向?并在"纵向"模式下正确显示我的其余活动?

或者无论如何旋转预览以便正确显示?

camera android portrait preview orientation

123
推荐指数
3
解决办法
9万
查看次数

如何在iOS11主屏幕Web应用程序上访问相机?

摘要

我们无法使用WebRTC或文件输入从iOS11(公开发布)主屏幕Web应用程序访问相机,详情如下.我们的用户如何继续访问相机?

我们通过https提供网络应用页面.

4月更新

iOS 11.3的公开发布似乎解决了问题,文件输入摄像头访问再次正常工作!

3月更新

正如这里的人们所说,Apple docs建议网络应用程序相机功能在11.3与服务工作者一起返回.这很好,但我们还不确定是否我们希望每个人都重新安装,直到我们可以对11.3GM进行彻底测试.

解决方案,11月

我们失去了希望,苹果希望解决这个问题并向前迈进.修改了我们的网络应用程序以删除iOS"添加到主屏幕"功能,并要求受影响的用户删除任何以前的主屏幕图标.

12月6日更新

iOS 11.2和iOS 11.1.2无法修复.

解决方法,9月21日

似乎我们可以向Web应用程序的现有客户询问

  • 不升级到iOS11 - 祝你好运:)
  • 在iOS相机中拍照,然后在网络应用中选择它们
  • 等待下一个ios beta
  • 重新安装为Safari浏览器页面(删除ATHS逻辑后)
  • 切换到Android

文件输入

我们当前的生产代码使用的文件输入在iOS 10及更早版本中运行良好多年.在iOS11上,它可用作Safari选项卡,但不能用于主屏幕应用程序.在后一种情况下,相机被打开并且仅显示黑色屏幕,因此它是不可用的.

   <meta name="apple-mobile-web-app-capable" content="yes">
   ...
   <input type="file" accept="image/*">
Run Code Online (Sandbox Code Playgroud)

的WebRTC

iOS11上的Safari 11提供WebRTC媒体捕获功能,非常棒.

我们可以使用navigator.mediaDevices.getUserMedia根据此处链接的示例代码,在桌面和移动设备上的普通网页上捕捉相机图像到画布.

当我们将页面添加到iPad或iPhone主屏幕时,navigator.mediaDevices变得undefined无法使用.

    <meta name="apple-mobile-web-app-capable" content="yes">
    ...
    // for some reason safari on mac can debug ios safari page but not ios home screen web apps 
    var d = 'typeof navigator : ' + typeof …
Run Code Online (Sandbox Code Playgroud)

javascript html5 camera webrtc ios11

117
推荐指数
3
解决办法
3万
查看次数

UIImagePickerController错误:在iOS 7中快照未呈现的视图会导致空快照

我只在iOS 7中收到此错误并且应用程序崩溃了.在iOS 6中,我从未收到任何错误,只是在打开相机时出现内存警告.

Snapshotting a view that has not been rendered results in an empty snapshot. Ensure your view has been rendered at least once before snapshotting or snapshot after screen updates.
Run Code Online (Sandbox Code Playgroud)

这就是我在做的事情.

imagePicker = [[UIImagePickerController alloc] init];
[imagePicker setDelegate:self];
[imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
[imagePicker setAllowsEditing:YES];

[self presentModalViewController:imagePicker animated:YES];
Run Code Online (Sandbox Code Playgroud)

我确实试图延迟presentModalViewController,但我仍然得到相同的消息.几秒钟后(7-10),应用程序崩溃了.

此错误仅出现在iOS 7中.

有人有线索吗?先感谢您.

iphone camera uiimagepickercontroller ios ios7

103
推荐指数
4
解决办法
7万
查看次数

AVFoundation,如何在captureStillImageAsynchronouslyFromConnection时关闭快门声音?

我试图通过AVFoundation captureStillImageAsynchronouslyFromConnection在摄像机的实时预览期间捕获图像.到目前为止,该计划按预期工作.但是,如何将快门声静音?

iphone camera cocoa-touch avfoundation ios

88
推荐指数
5
解决办法
7万
查看次数

如何正确设置Android相机方向?

我想根据Android中的设备方向设置相机方向,但似乎没有任何效果.我尝试旋转Surface以及相机参数,但是纵向模式下的相机预览总是颠倒过来.我需要顺时针旋转90度才能使其正确.这是我现在使用的代码,仅适用于横向模式.

    SurfaceHolder.Callback surfaceCallback = new SurfaceHolder.Callback() {

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        camera.stopPreview();
        camera.release();
        camera = null;
    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {          
        initCamera();           
    }

    private Size getOptimalPreviewSize(List<Size> sizes, int w, int h) {
        final double ASPECT_TOLERANCE = 0.2;
        double targetRatio = (double) w / h;
        if (sizes == null)
            return null;

        Size optimalSize = null;
        double minDiff = Double.MAX_VALUE;

        int targetHeight = h;

        // Try to find an size match aspect ratio and size
        for (Size size …
Run Code Online (Sandbox Code Playgroud)

camera android orientation surfaceview

87
推荐指数
7
解决办法
16万
查看次数

iOS还原相机投影

我正在尝试估算与太空中QR码相关的设备位置.我正在使用ARKit和Vision框架,两者都在iOS11中引入,但这个问题的答案可能并不依赖于它们.

使用Vision框架,我能够获得在相机框架中限制QR码的矩形.我想将此矩形与从标准位置转换QR码所需的设备平移和旋转相匹配.

例如,如果我观察到框架:

*            *

    B
          C
  A
       D


*            *
Run Code Online (Sandbox Code Playgroud)

如果我距离QR码1米远,以它为中心,假设QR码的边长为10cm,我会看到:

*            *


    A0  B0

    D0  C0


*            *
Run Code Online (Sandbox Code Playgroud)

那两个帧之间的设备转换是什么?我知道确切的结果可能是不可能的,因为观察到的QR码可能是略微非平面的,我们试图估计一个不完美的东西上的仿射变换.

我想这sceneView.pointOfView?.camera?.projectionTransformsceneView.pointOfView?.camera?.projectionTransform?.camera.projectionMatrix后者已经考虑了从ARKit推断的变换更有帮助我对此问题不感兴趣.

我该怎么做

func get transform(
  qrCodeRectangle: VNBarcodeObservation,
  cameraTransform: SCNMatrix4) {
  // qrCodeRectangle.topLeft etc is the position in [0, 1] * [0, 1] of A0

  // expected real world position of the QR code in a referential coordinate system
  let a0 = SCNVector3(x: -0.05, y: 0.05, z: 1)
  let b0 = SCNVector3(x: 0.05, y: 0.05, z: …
Run Code Online (Sandbox Code Playgroud)

camera augmented-reality ios scenekit arkit

87
推荐指数
1
解决办法
3414
查看次数

如何在Android平台上打开"前置摄像头"?

更一般地说,如果设备有多个嵌入式摄像头,是否有办法初始化其中一个?

我没有在Android参考文档中找到它:

三星SHW-M100S有两个摄像头.如果没有参考使用两个相机,任何想法三星怎么做...?

camera android android-camera

83
推荐指数
4
解决办法
15万
查看次数

在OpenCV/Python中设置相机参数

我正在使用OpenCV(2.4)和Python(2.7.3)以及Thorlabs的USB摄像头(DC1545M).

我正在对视频流进行一些图像分析,我希望能够从我的视频流中更改一些摄像机参数.令人困惑的是,我能够改变一些相机属性而不是所有相机属性,我不确定我做错了什么.

这是代码,使用Python中的cv2绑定,我可以确认它运行:

import cv2


#capture from camera at location 0
cap = cv2.VideoCapture(0)
#set the width and height, and UNSUCCESSFULLY set the exposure time
cap.set(3,1280)
cap.set(4,1024)
cap.set(15, 0.1)

while True:
    ret, img = cap.read()
    cv2.imshow("input", img)
    #cv2.imshow("thresholded", imgray*thresh2)

    key = cv2.waitKey(10)
    if key == 27:
        break


cv2.destroyAllWindows() 
cv2.VideoCapture(0).release()
Run Code Online (Sandbox Code Playgroud)

作为参考,cap.set()命令中的第一个参数引用了相机属性的枚举,如下所示:

0. CV_CAP_PROP_POS_MSEC Current position of the video file in milliseconds.
1. CV_CAP_PROP_POS_FRAMES 0-based index of the frame to be decoded/captured next.
2. CV_CAP_PROP_POS_AVI_RATIO Relative position of the video …
Run Code Online (Sandbox Code Playgroud)

python camera opencv python-2.7

77
推荐指数
5
解决办法
19万
查看次数

SurfaceHolder回调如何与Activity生命周期相关?

我一直在尝试实现一个需要在表面上进行相机预览的应用程序.在我看到事物时,活动和表面生命周期都包含以下状态:

  1. 当我第一次启动我的活动: onResume()->onSurfaceCreated()->onSurfaceChanged()
  2. 当我离开我的活动: onPause()->onSurfaceDestroyed()

在此方案中,我可以像打开/释放相机相应的调用和启动/停止在预览onPause/onResumeonSurfaceCreated()/onSurfaceDestroyed().

它工作正常,除非我锁定屏幕.当我启动应用程序时,然后锁定屏幕并在以后解锁它我看到:

onPause()- 屏幕锁定后没有别的 - 然后onResume()解锁后 - 之后没有表面回调.实际上,onResume()在按下电源按钮并且屏幕打开后调用,但是锁定屏幕仍然处于活动状态,因此,在活动变得均匀可见之前.

通过这种方案,我在解锁后得到一个黑屏,并且没有调用表面回调.

这是一个代码片段,不涉及相机的实际工作,而是SurfaceHolder回调.即使在我的手机上使用此代码,也会重现上述问题(按"后退"按钮时会以正常顺序调用回调,但在锁定屏幕时会丢失):

class Preview extends SurfaceView implements SurfaceHolder.Callback {

    private static final String tag= "Preview";

    public Preview(Context context) {
        super(context);
        Log.d(tag, "Preview()");
        SurfaceHolder holder = getHolder();
        holder.addCallback(this);
        holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

    public void surfaceCreated(SurfaceHolder holder) {
        Log.d(tag, "surfaceCreated");
    }

    public void surfaceDestroyed(SurfaceHolder holder) {
        Log.d(tag, "surfaceDestroyed");
    }

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { …
Run Code Online (Sandbox Code Playgroud)

camera android surfaceview

71
推荐指数
2
解决办法
4万
查看次数

在iOS 8中显示相机权限对话框

当我的应用程序第一次尝试在iOS 8上访问摄像头时,会向用户显示摄像头权限对话框,非常类似于iOS 7中用于麦克风访问的麦克风.

在iOS 7中,可以事先调用麦克风权限对话框,并查看是否已授予权限(例如,请参阅此问题).是否有类似的方法来调用iOS 8中的相机权限对话框?可以将对话组合用于麦克风和摄像机访问权限吗?

permissions camera ios ios8 ios-permissions

70
推荐指数
6
解决办法
7万
查看次数