- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用前置摄像头,当我捕捉帧时,它们会逆时针旋转 90 度。我想在 CGContext 中旋转捕获的图像(因为我读到 Core Graphic 比其他框架快得多)。
这是我的代码:
func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, from connection: AVCaptureConnection!) {
let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)
CVPixelBufferLockBaseAddress(imageBuffer!, CVPixelBufferLockFlags(rawValue: 0))
let width = CVPixelBufferGetWidthOfPlane(imageBuffer!, 0)
let height = CVPixelBufferGetHeightOfPlane(imageBuffer!, 0)
let bytesPerRow = CVPixelBufferGetBytesPerRowOfPlane(imageBuffer!, 0)
let lumaBuffer = CVPixelBufferGetBaseAddressOfPlane(imageBuffer!, 0)
let grayColorSpace = CGColorSpaceCreateDeviceGray()
let context = CGContext(data: lumaBuffer,
width: width,
height: height,
bitsPerComponent: 8,
bytesPerRow: bytesPerRow,
space: grayColorSpace,
bitmapInfo: CGImageAlphaInfo.none.rawValue);
let transform1 = CGAffineTransform(rotationAngle: CGFloat(M_PI_2))
context!.concatenate(transform1)
//context!.rotate(by: CGFloat(M_PI_2)) // also not working!
let dstImage = context!.makeImage()
detect(image: dstImage!)
}
最佳答案
经过大量搜索和阅读文章,我在 AVCaptureConnection 类中找到了我的解决方案!我只需要请求连接在捕获函数中使用以下示例代码在缓冲区内旋转帧!!
if connection.isVideoOrientationSupported
{
connection.videoOrientation = .portrait
}
if connection.isVideoMirroringSupported
{
connection.isVideoMirrored = true
}
就是这样!
关于ios - 在 CGContext 中旋转从 Samplebuffer 捕获的帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40918526/
我正在使用 ReplayKit 录制视频: let sharedRecorder = RPScreenRecorder.shared() sharedRecorder.startC
我使用此代码从相机捕获视频,但 CMSampleBufferGetImageBuffer(sampleBuffer) 始终返回 nil。问题是什么?。这是代码,我修改了此源代码以适应 Swift 4
我尝试将示例缓冲区而不是 UIImage 保存到数组中,以便稍后转换它。这样可以加快图像捕获速度,并且可能不会收到内存警告。我只是不知道如何将它保存到数组,然后再次使用它来调用 [self image
我正在使用前置摄像头,当我捕捉帧时,它们会逆时针旋转 90 度。我想在 CGContext 中旋转捕获的图像(因为我读到 Core Graphic 比其他框架快得多)。 这是我的代码: func ca
如何在 Swift 中使用“CFRetain(sampleBuffer)”和“CFRelease(sampleBuffer)”? CFRetain 不可用:Core Foundation 对象自动进行
我正在尝试使用 OpenCV 进行实时相机处理。在 AVCaptureVideoDataOutputSampleBufferDelegate 的 didOutputSampleBuffer 方法中,我
我正在努力解决这个问题。我想使用 AVAssetWriterInput 在 OSX 上使用 Swift 录制实时视频。 我创建了一个名为 input 的 AVAssetWriterInput 实例,我
我试图更好地理解 AVFoundation 框架以及各种 Core xxxx 框架,因此我决定尝试一个简单的视频捕获,看看是否可以将图像输出到 UI。我查看了 rosyWriter 代码和文档,但没有
如何在 Swift 3 中将 captureStillImageAsynchronously(sampleBuffer) 转换为 base64 编码 我正在尝试将图像数据连续馈送到 HTML WebV
我是一名优秀的程序员,十分优秀!