标签: cvpixelbuffer

用作子 VC 时,VNDetectRectangleRequest 中的边界框大小不正确

我正在尝试使用VNDetectRectangleRequest苹果的 Vision 框架来自动抓取卡片的图片。然而,当我转换点来绘制矩形时,它是畸形的并且不遵循矩形。我一直在密切关注这篇文章

一个主要区别是我将 CameraCaptureVC 嵌入到另一个 ViewController 中,以便仅当卡位于这个较小的窗口中时才会扫描该卡。

下面是我如何在父 vc 中设置相机 vc(从 viewDidLoad 调用)。

func configureSubviews() {
    clearView.addSubview(cameraVC.view)
    cameraVC.view.autoPinEdgesToSuperviewEdges()
    self.addChild(cameraVC)
    cameraVC.didMove(toParent: self)
}
Run Code Online (Sandbox Code Playgroud)

下面是绘制矩形的代码

func createLayer(in rect: CGRect) {
    let maskLayer = CAShapeLayer()
    maskLayer.frame = rect
    maskLayer.cornerRadius = 10
    maskLayer.opacity = 0.75
    maskLayer.borderColor = UIColor.red.cgColor
    maskLayer.borderWidth = 5.0

    previewLayer.insertSublayer(maskLayer, at: 1)
}

func removeMask() {
    if let sublayer = previewLayer.sublayers?.first(where: { $0 as? CAShapeLayer != nil }) {
        sublayer.removeFromSuperlayer()
    }
}

func drawBoundingBox(rect : VNRectangleObservation) {
    let …
Run Code Online (Sandbox Code Playgroud)

rectangles ios swift cvpixelbuffer apple-vision

3
推荐指数
1
解决办法
4007
查看次数

DepthData - 获取每像素深度数据(CVPixelBuffer数据分析)

现在我AVDepthPhotoFilter从iPhone7Plus的立体相机中运行Rendering Depth Deta.

所以,我想访问每像素深度数据,但是,我不知道该怎么做.请指教.

swift cvpixelbuffer iphone7plus ios11

2
推荐指数
1
解决办法
1264
查看次数

什么是iOS中的CVPixelBuffer?

根据Apple文档,它是存储在主存储器中的图像,但这些图像如何用于制作电影?

core-video ios cvpixelbuffer

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

从MtlTexture中获取getBytes以创建CVPixelBufferRef

尝试在SCNRender对象的每个调用渲染中从MTLTexture创建CVPixelBufferRef:

  CVPixelBufferLockBaseAddress(pixelBuffer!, CVPixelBufferLockFlags(rawValue: 0))
        let bytesPerRow = 4 * Int(textureSizeX)
        let region = MTLRegionMake2D(0, 0, Int(textureSizeX), Int(textureSizeY))

    var tmpBuffer = CVPixelBufferGetBaseAddress(pixelBuffer!);

    offscreenTexture.getBytes(tmpBuffer!, bytesPerRow: bytesPerRow, from: region, mipmapLevel: 0)

    CVPixelBufferUnlockBaseAddress(pixelBuffer!, CVPixelBufferLockFlags(rawValue: 0))
Run Code Online (Sandbox Code Playgroud)

然后转换为UIImage以显示在屏幕上

    let ciImage = CIImage.init(cvPixelBuffer: pixelBuffer!)
    let temporaryContext = CIContext(options: nil)
    let tempImage = temporaryContext.createCGImage(ciImage, from: CGRect(x: 0, y: 0, width: textureSizeX, height: textureSizeY))
    let uiImage = UIImage.init(cgImage: tempImage!)
Run Code Online (Sandbox Code Playgroud)

但是不显示图像

ios metal cvpixelbuffer

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

WebRTC iOS:从 RTCCameraVideoCapturer 过滤摄像头流。从 RTCFrame 到 CVPixelBuffer 的转换

我发现下面的 git 使用func capturer(_ capturer: RTCVideoCapturer, didCapture frame: RTCVideoFrame)of既简单又高效RTCVideoCapturerDelegate。你得到RTCVideoFrame然后转换CVPixelBuffer为修改。

https://gist.github.com/lyokato/d041f16b94c84753b5e877211874c6fc

但是,我发现 Chronium 说获得 PixelBuffer 的 nativeHandle 不再可用(链接如下)。我尝试了 frame.buffer.pixelbuffer...,但是,查看框架 > 标题 > RTCVideoFrameBuffer.h,我发现 CVPixelBuffer 也从这里消失了!

https://codereview.webrtc.org/2990253002

有什么好的方法可以转换RTCVideoFrameCVPixelBuffer?或者我们有更好的方法来修改从 RTCCameraVideoCapturer 捕获的视频吗?

下面的链接建议直接修改 sdk,但希望我们可以在 Xcode 上实现这一点。

如何修改(添加过滤器)WebRTC 发送到其他对等点/服务器的摄像头流

video-capture ios webrtc cvpixelbuffer

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