我想在最大圖像傳感器捕獲分辨率爲8MP的iOS設備中以5MP分辨率捕獲圖像。如何在iPhone設備上使用800萬像素攝像頭捕捉500萬像素圖像?
在Avfoundations AVCaptureSessionPresetPhoto提供的預設讓 - 3264X2448 - 800萬像素的分辨率 VCaptureSessionPresetHigh給 - 1920×1080 - 2 MP分辨率
有什麼辦法/解決方法直接捕捉500萬像素,而不是捕捉800萬像素,然後縮減?
我想在最大圖像傳感器捕獲分辨率爲8MP的iOS設備中以5MP分辨率捕獲圖像。如何在iPhone設備上使用800萬像素攝像頭捕捉500萬像素圖像?
在Avfoundations AVCaptureSessionPresetPhoto提供的預設讓 - 3264X2448 - 800萬像素的分辨率 VCaptureSessionPresetHigh給 - 1920×1080 - 2 MP分辨率
有什麼辦法/解決方法直接捕捉500萬像素,而不是捕捉800萬像素,然後縮減?
iOS給相機提供的輸出分辨率非常有限。
您剛纔提到的最大尺寸是8MP,下一個預設會降低到1080p或〜200萬像素。預計看起來是按照應用程序的要求縮小/裁剪圖像,但是SDK不提供單個API來獲取所需的分辨率或輸出圖像。
希望這會有所幫助。
AVCaptureSessionPreset只給出常量分辨率(您可以看到API參考)。如果你想保存在自定義分辨率的圖像,你可以在這裏找到Save image with custom resolution
你爲什麼不拍攝的圖像與800萬像素的攝像頭,然後保存圖像使用前改變其大小WRT 500萬像素的分辨率以下方法
+ (UIImage*)imageWithImage:(UIImage*)image
scaledToSize:(CGSize)newSize
{
UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
在保存捕獲的圖像之前,在imagePickerDidFinishMediaWithInfoMethod中調用上述方法。上述方法將返回一個尺寸改變的Uiimage(你必須提供CGSize)。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage * tempImage =[info objectForKey:UIImagePickerControllerOriginalImage];
CGSize mSize;
mSize = CGSizeMake(your width and height as per 5MP mode);
tempImage = [ViewController imageWithImage:tempImage scaledToSize:mSize];
// use this temp img as it would be in dimensions of 5MP image.
}
謝謝@Rana。你的答案是有幫助的,但我試圖避免調整大小。而且我正在考慮直接獲取YUV/RGB緩衝區,如果可能的話不經處理。 –
您的解決方案非常有幫助。以自定義分辨率從屏幕獲取UIImage是很有用的。我試圖以YUV420SP格式捕捉圖像,有沒有什麼辦法可以在自定義分辨率下捕捉YUV420。 –
如果我正確地進行了簡要說明,在您指出的解決方案中,我們正在使用Core圖形API調整UIImage的大小,以獲得自定義分辨率。如果我的理解錯誤,請糾正我。 –