问题标签 [cvpixelbuffer]

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 投票
0 回答
198 浏览

ios - 为什么我不能一次读取超过 12 个 CVPixelBuffers?

我正在 iOS 上制作视频效果(使用 Metal),它需要访问当前视频帧以及一些先前帧的像素数据。为此,我将像素缓冲区存储在一个类似于堆栈的 Array 属性中。渲染时,我循环遍历像素缓冲区并为每个缓冲区创建一个 MTLTexture。然后这些纹理作为 texture2d_array 发送到我的 Metal 着色器。

一切都很好,除了当我尝试一次显示来自超过 12 个不同像素缓冲区的数据时,我的捕获输出停止发送新帧并且视频看起来冻结。没有警告或崩溃。我一直在使用 iPhone 8。

似乎我达到了一些明确的限制,尽管我无法确定该限制的性质是什么。我对图形编程相当陌生,所以我很可能做错了事。我将非常感谢任何帮助或想法。

这是我的像素缓冲区堆栈:

这是我创建纹理的地方:

在此处的上下文中查看此代码:https ://gist.github.com/peeinears/5444692079d011a0ca3947c4e49efd47

如果有帮助,我很乐意分享更多。

谢谢!

0 投票
0 回答
628 浏览

ios - 如何在coreml Swift 4中将图像转换为cvPixelImage

我想将图像转换为模型图像大小。我正在使用 API 获取图像。这是代码。

而且,这是我用于图像大小转换的代码。

我收到尺寸错误。

图像大小未转换为模型图像大小。

谁能帮我这个?

这是我得到的错误

[coreml] Error Domain=com.apple.CoreML Code=1 "Input image feature sceneImage does not match model description" UserInfo={NSLocalizedDescription=Input image feature sceneImage does not match model description, NSUnderlyingError=0x6000006a1d40 {Error Domain=com.apple .CoreML Code=0 "图像尺寸 3829 x 2411 不在允许的图像尺寸集中" UserInfo={NSLocalizedDescription=图像尺寸 3829 x 2411 不在允许的图像尺寸集中}}}

0 投票
1 回答
3146 浏览

swift - 如何裁剪和翻转 CVPixelBuffer 并返回 CVPixelBuffer?

我正在制作一个快速的视频应用程序。

在我的应用程序中,我需要裁剪和水平翻转 CVPixelBuffer 并返回类型也是 CVPixelBuffer 的结果。

我尝试了几件事。

首先,我使用了“CVPixelBufferCreateWithBytes”

使用此代码,我可以直接裁剪 CVPixelBuffer 并返回 CVPixelBuffer。但是,我不知道如何水平翻转 CVPlxelBuffer。

所以我尝试了其他解决方案。

几秒钟后,我将 CVPixelBuffer 转换为 CIImage,然后返回 CVPixelBuffer

但结果并不如我所料。图像的某些部分是黑色的,我认为 CGAffineTransform 不起作用。

最后,我尝试转换为 CGImage

此时,输出像素缓冲区是全黑的。

我不知道如何裁剪和翻转 CVPixelBuffer 并返回 CVPixelBuffer。

我认为转换 CIImage 或 CGImage 是更好的方法,因为我可以用这些格式做很多事情。

但我不知道如何将这些格式转换回 CVPixelBuffer。

请让我知道如何做到这一点。

0 投票
1 回答
261 浏览

ios - 我们为 AVCaptureSession 选择哪种像素格式类型来使用 Vision 运行 CoreML 模型是否重要?

我正在使用 Apple 的示例应用程序早餐查找器进行检测,它使用双平面 yuv 格式的像素格式类型。我将其更改为 ARGB,并在我自己的 Turi create 训练模型上运行。现在我不知道更改像素格式类型对在缓冲区上执行视觉请求有任何影响。

0 投票
0 回答
522 浏览

calayer - 如何有效地将 CALayer 变成 CVPixelBuffer?

我想找到一种方法来替换 CALayer 函数 "layer.render(in: context)" ,这样可以更有效

0 投票
2 回答
579 浏览

ios - 快速检索实时相机预览的最后一帧

我有一个 AR 应用程序,其中视图不断显示后置摄像头看到的内容,并将每一帧发送到 VisionRequest 进行分析。

识别出对象后,我想捕获特定的最后一帧并将其保存为常规帧,并将UIImage其沿 segue 链发送到显示最后一帧的最终视图控制器。我在捕捉最后一帧并显示它时遇到问题。

这是我到目前为止所尝试的:

当图像以足够高的可信度被识别时,我尝试从 中检索当前的最后一帧CVPixelBuffer并将其保存在一个局部变量中,该变量稍后会在一个 segue 中传递给后续视图控制器。

这是正确的做法吗?还是我必须向会话添加第二个输出(除了视频数据输出之外的照片输出)?

0 投票
1 回答
660 浏览

ios - CVPixelBufferGetWidth(pixelbuffer) 和 CVPixelBufferGetWidthOfPlane(pixelbuffer, 0) 有什么区别?

CVPixelBufferGetWidth(pixelbuffer)和和CVPixelBufferGetWidthOfPlane(pixelbuffer, 0)之间 有什么区别吗?CVPixelBufferGetHeight(pixelbuffer)CVPixelBufferGetHeightOfPlane(pixelbuffer, 0)

我搜索维基,它说:

它并没有说 y 的值对于所有格式都是相等的图像宽度。

因此,如果

0 投票
1 回答
219 浏览

ios - CVPixelBuffer 导致设备上的垃圾图像,同时在模拟器上按预期工作

我正在尝试使用人工创建的数据创建图像并希望使用CVPixelBuffer

该代码在模拟器上运行良好,并显示如下:

在此处输入图像描述

但是相同的代码在设备上显示垃圾结果:

在此处输入图像描述

我在这里想念什么?欢迎任何建议。

0 投票
0 回答
194 浏览

ios - EXC_BAD_ACCESS 发生在 H264 编码 CMSampleBuffer 上

试图将 a 转换CMSampleBufferH264编码数据

上述方法被连续调用。好像扔了EXC_BAD_ACCESS

我尝试使用NSZombie对象,但仍然无法弄清楚是什么原因造成的。

我尝试创建一个副本CMSampleBufferRef并传递它以确保它不会被释放。还是EXC_BAD_ACCESS被扔了。

谁能帮我弄清楚发生了什么?

PS -CMSampleBuffer创建自CVPixelBuffer

0 投票
1 回答
517 浏览

ios - UIImage 获取 CVPixelBuffer 移除 Alpha

下面的函数接受UIImage并从 中返回 a CVPixelBufferUIImage但它删除了 alpha 通道。

  1. 我知道初始图像有一些特定的像素,alpha = 0因为如果我这样做po image.pixelColor(atLocation: CGPoint(x: 0, y: 0)),它会打印

可选 - 一些:UIExtendedSRGBColorSpace 0 0 0 0

但生成的图像具有黑色背景。

我也尝试过使用CGImageAlphaInfo.premultipliedLast.rawValue,但这会导致图像变蓝,所以我认为RGBAtoARGB正在被交换。但是,具有讽刺意味的是,这意味着 B inARGB是 255,这表明RGBAA 将是 255,它应该是 0。

使用时如何正确地将UIImagealpha 转换为 alpha ?CVPixelBufferCGContext

编辑1:

这是我的pixelBufferPool.

它仅在我使用kCVPixelFormatType_32ARGB. 我所说的工作是指当我尝试使用缓冲池时

如果我使用该版本,这将失败,RGBA但如果我使用该ARGB版本,则可以。