首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVAsset到CIDetectorImageOrientation

AVAsset到CIDetectorImageOrientation
EN

Stack Overflow用户
提问于 2016-05-29 18:22:20
回答 1查看 334关注 0票数 0

我想在AVAsset中的每一帧上使用CoreImage运行人脸检测,为此,我需要该资源中每个样本缓冲区的CIDetectorImageOrientation

问题是,如果我将CMSampleBuffer转换为UIImage,并使用以下命令将该图像转换为exif方向:

代码语言:javascript
复制
var exifOrientation: UInt32 {
    switch self.imageOrientation {
    case .Up: return 1
    case .Down: return 3
    case .Left: return 8
    case .Right: return 6
    case .UpMirrored: return 2
    case .DownMirrored: return 4
    case .LeftMirrored: return 5
    case .RightMirrored: return 7
    }
}

方向始终是.Up,无论视频是如何拍摄的(前置摄像头还是后置摄像头),也不管视频拍摄的方向是什么。

如何正确获取CMSampleBufferCIDetectorImageOrientation

EN

回答 1

Stack Overflow用户

发布于 2016-07-14 04:09:25

您需要获取该资源的视频轨迹的方向。此方向对于每个帧都是相同的。下面是你在Objective C中的大致方法。

代码语言:javascript
复制
AVAssetTrack *videoTrack =[asset tracksWithMediaType:AVMediaTypeVideo].firstObject;
CGSize size = [videoTrack naturalSize];
CGAffineTransform preferredTransform = [videoTrack preferredTransform];

if (size.width == preferredTransform.tx && size.height == preferredTransform.ty) {
  return kCGImagePropertyOrientationRight;
} else if (preferredTransform.tx == 0 && preferredTransform.ty == 0) {
  return kCGImagePropertyOrientationUpLeft;
} else if (preferredTransform.tx == 0 && preferredTransform.ty == size.width) {
  return kCGImagePropertyOrientationDown;
}
...
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37508736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档