裁剪取自 AVCaptureStillImageOutput 的图像

Posted

技术标签:

【中文标题】裁剪取自 AVCaptureStillImageOutput 的图像【英文标题】:Cropping an image taken from AVCaptureStillImageOutput 【发布时间】:2013-09-17 16:09:17 【问题描述】:

我正在尝试裁剪从 AVCaptureStillImageOutput 获取的图像,但无法正确裁剪正确的矩形。

我的相机视频预览是 320x458 帧,裁剪矩形出现在此预览帧内,其坐标和大小为 CGRectMake(60, 20, 200, 420)。

拍照后,我收到来自

的图片
NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];
UIImage *image = [[UIImage alloc] initWithData:imageData];
UIImage *finalImage = [self cropImage:image];

之后,我尝试使用以下函数裁剪此尺寸为 1080x1920 的实际图像。我得到了一个任性的剪辑,结果图像超出了实际的矩形! ;(

- (UIImage *)cropImage:(UIImage *)oldImage 
    CGRect rect = CGRectMake(60, 20, 200, 420);
    CGSize boundSize = CGSizeMake(320, 458);

    float widthFactor = rect.size.width * (oldImage.size.width/boundSize.width);
    float heightFactor = rect.size.height * (oldImage.size.height/boundSize.height);
    float factorX = rect.origin.x * (oldImage.size.width/boundSize.width);
    float factorY = rect.origin.y * (oldImage.size.height/boundSize.height);

    CGRect factoredRect = CGRectMake(factorX,factorY,widthFactor,heightFactor);
    UIImage *croppedImage = [UIImage imageWithCGImage:CGImageCreateWithImageInRect([oldImage CGImage], factoredRect) scale:oldImage.scale orientation:oldImage.imageOrientation];
    return croppedImage;

在附图中,我正在尝试裁剪咖啡杯,但我得到的不是正确的裁剪图像!

【问题讨论】:

【参考方案1】:

我认为您应该使用 PEPhotoCropEditor 示例代码进行裁剪。它很容易使用。可以从https://www.cocoacontrols.com/controls/pephotocropeditor下载源代码

【讨论】:

【参考方案2】:

我在这方面也面临着困难,我认为您要做的就是编写文件的图像,然后裁剪该图像或尝试解决方向问题。

【讨论】:

以上是关于裁剪取自 AVCaptureStillImageOutput 的图像的主要内容,如果未能解决你的问题,请参考以下文章

序列名称取自变量

csharp JSONObject组件。取自Unity Wiki

如何创建一个名称取自 PostgreSQL 中的字符串的表?

xcode swift cell detailTextLabel.text?.颜色取自日期

生成一个矩阵,其中包含取自 n 个向量的元素的所有组合

如何释放所有内存pytorch取自gpu内存