问题标签 [avcapturephotooutput]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
139 浏览

swift - 尝试使用 AVCapturePhotoOutput 时“没有活动和启用的视频连接”

我需要一种从 macOS 应用程序以编程方式拍摄照片的方法,我正在使用AVCapturePhotoOutput它来实现这一点。

首先我初始化相机

但是我得到

self.capturePhoto()用按钮触发后。

0 投票
1 回答
59 浏览

swift - AVCapturePhoto 输出到 Base64

我正在使用 swift 开发一个与运行烧瓶的服务器通信的应用程序。我希望能够拍照并以base64格式上传。目前我正在使用的 base64 编码正在生成损坏且无法使用的图像。当我使用 AVCapturePhotoOutput 时,UIImage 到 base64 的教程对我不起作用,因为 swift 无法将 AVCapturePhotoOutput 转换为 UIImage。如何获得可靠工作的 base64 图像?如何将图像从 AVCapturePhotoOutput 转换为 base64?提前感谢您的帮助!

0 投票
0 回答
110 浏览

ios - AVCapturePhotoOutput didFinishProcessingPhoto 没有被调用

我正在尝试使用AVCapturePhotoOutputand捕获图像AVCaptureSession,我的代码如下(通过 XCTest 运行它):

我的委托对象是:

运行代码会产生以下输出:

它缺少对didFinishProcessingPhoto.

知道可能是什么原因吗?

0 投票
1 回答
41 浏览

swift - 实例成员“fileDataRepresentation”不能用于“AVCapturePhoto”类型;你的意思是使用这种类型的值吗?

Swift 给出了无法为 AVCapturePhoto 创建文件数据表示的错误。打印“照片”,返回照片的元数据。如何将图像转换为文件字节并最终转换为 base64?到目前为止,我已经尝试了很多方法,但都依赖于获取文件字节。感谢您提前回复!

0 投票
0 回答
104 浏览

swift - 自定义 AVCapturePhoto 对象的像素缓冲区

我正在尝试通过平均来自不同帧的结果来编写一个模拟长时间曝光的相机应用程序。我请求 RAW 格式的捕获结果,我需要将逐像素平均的结果保存在 DNG 文件中。

我天真的方法是从以下位置获取 AVCapturePhoto 对象:

照片对象有一个 pixelBuffer 属性 (CVPixelBuffer),我可以将其用于我的操作。更重要的是,它有一个非常方便的方法:fileDataRepresentation(),它返回一个可以写入 DNG 文件的平面数据表示。我真的很喜欢使用这种方法:)

但是,pixelBuffer 属性是只读的(所以我不能修改它),并且 AVCapturePhoto 类没有初始化程序。我找不到任何方法来继承 AVCapturePhoto 并覆盖 pixelBuffer 属性。

有没有办法可以创建自己的 AVCapturePhoto 对象(或其子类)并使用 fileDataRepresentation() 编写带有自定义像素缓冲区的 DNG 文件?

0 投票
0 回答
85 浏览

swift - Swiftui photoOutput for Images 不是每次都调用

这实际上与这篇文章AVCapturePhotoCaptureDelegate photoOutput() 不是每次都调用但没有人回应的问题相同。我发现在 takePic 上有时会调用 photoOutput 函数,而不是其他函数,它实际上是 50/50 。我正在使用 Swiftui 2.0 。有谁知道解决这个问题或为什么会发生这个问题?复制它的代码实际上很小。它是下面的代码,然后在info.plist 中设置隐私-相机使用说明和隐私-照片库使用说明的权限。我尝试了不同的方法,但实际上是否调用 photoOutput 仍然是 50/50。当它未被调用时,您将在日志中看到它print("Nil on SavePic:picData")任何建议都会很棒。

0 投票
1 回答
110 浏览

ios - SwiftUI AVCapturePhotoOutput 不起作用

我有一个带有 SwiftUI 生命周期的简单 SwiftUI 应用程序,我正在尝试使用 AVFoundation 自动拍照。我将根据条件或基于计时器来执行此操作 - 但对于此示例,我只想在启动时拍照并显示它(不是预览层)。我不希望需要任何用户操作。

我显然不了解正确的设置和捕获。

任何指导将不胜感激。Xcode 12.5.1 iOS 14.5

第二次尝试添加示例:

在此处输入图像描述

稍后编辑。在使用 Philip Dukhov 提供的更改纠正了我的方法后,我仍然遇到了一个问题 - 图像仍然很暗 - 以至于无法识别物体。经过大量的试验和错误后,相机在拍摄之前似乎需要一些非常短的时间来设置。虽然这似乎不是一个好的编程计划,但我在会话捕获之前设置了一点延迟。短短 0.1 秒似乎就足够了。现在开始捕获:

如果您知道更好的方法 - 请告诉我。

0 投票
0 回答
24 浏览

ios - AVCapturePhotoOutput 总是以纵向拍摄照片

是否可以以纵向拍摄所有照片?现在,如果我在风景中拍摄照片,它就是在风景中。尝试设置:

但它没有帮助并尝试为 AVCaptureVideoPreviewLayer 设置 videoOrientation,但它又没有了。

0 投票
1 回答
106 浏览

swift - 从 AVCapturePhotoOutput 裁剪 CGRect (resizeAspectFill)

我发现了以下问题,不幸的是,其他帖子并没有帮助我找到可行的解决方案。

我有一个简单的应用程序,它显示视频重力已设置为 resizeAspectFill ( ) 的相机预览 (AVCaptureVideoPreviewLayer videoGravity = .resizeAspectFill)。

据我了解,这只会拉伸图像的宽度以填充屏幕。

在我的预览层上,我还应用了一个 CGRect 作为具有固定 x、y、宽度和高度的蒙版。

现在,一旦我拍照,我就会尝试从图像中裁剪出那个确切的矩形。据我了解,我应该使用某种数学方法将 CGRect 转换为与我从 AVCapturePhotoOutput 方法获得的图像相同的纵横比,但它似乎从未正确裁剪宽度。

再说一次,基本上它确实以正确的高度进行裁剪,但它只是宽度似乎不太好。

我想要捕捉的图像示例。

https://imgur.com/a/8GryEgX

如您所见,左上角的边界框在“Q”按钮之后停止。

结果:

https://imgur.com/FwKRWxK

正如您在这张图片中看到的,它确实在高度上正确裁剪,但是如果我们看一下左上角,它还包括“Q”左侧的一半按钮(Tab 按钮)

对解决方案的任何帮助将不胜感激!

0 投票
1 回答
51 浏览

ios - 如何使用目标 C 将使用 captureOutput didFinishProcessingPhoto 拍摄的图像转换为要存储在 JSON 中的字符串

我正在拍照并使用captureOutput:didFinishProcessingPhoto.

我需要将照片 (AVCapturePhoto) 转换为字符串,以便我可以将其以 JSON 格式发送到服务器。我需要先将它存储在 userDefaults 中,然后在最后一个屏幕上检索它并将其添加到 JSON/Dictionary。

我正在做一个我没有开始的项目。我通常会设置完全不同的。无论哪种方式,这都是我现在的问题。

我正在尝试这个:

注释掉的代码只是失败的尝试。

在swift中,我通过将可编码对象创建为单例(从未将其存储在默认值中)来实现这一点,并在发送数据之前调用此函数:

我在目标c上没有这样的运气。我没有 jpegData 功能....

每次我尝试转换数据时,转换都会失败,并且我会返回 null。为什么?