为什么快速使用UIImage时我的图片分辨率非常差

时间:2019-02-06 13:55:27

标签: ios swift4 opencv3.1

我使用以下功能制作图片photoOutput?.capturePhoto(with: AVCapturePhotoSettings(), delegate: self)

当我保存图片时,他的体重只有200Ko左右,但是AVCaptureSession.presset的大小为.hight,因此尺寸为1920x1080。

有m'y prepare函数可以更改所有“图像”变量均为UIImage的视图:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showPhoto_Segue"{
        let previewVC = segue.destination as! PreviewViewController
        previewVC.image = self.image

    }
}

在我的photoOutput函数中,我有:

func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {

    if let imageData = photo.fileDataRepresentation(){
        image = UIImage(data: imageData)
        Arrayimages.append(image!)
        Arraytimes.append(Float64(CMTimeGetSeconds(currentCamera!.exposureDuration)))
    }
    if pictureNumber < 11 {
        pictureNumber += 1
        DispatchQueue.main.asyncAfter(deadline: .now() + newDurationSeconds + 0.3, execute: {
            self.photoOutput?.capturePhoto(with: AVCapturePhotoSettings(), delegate: self)
        })
    }
    else{
        image = OpenCVWrapper.hdrImaging(Arrayimages, Arraytimes)
        performSegue(withIdentifier: "showPhoto_Segue", sender: nil)
    }
}

在我的OpenCVWrapper.mm中,我有:

+(UIImage *) hdrImaging:(NSArray *)images :(NSArray *)times{
    std::vector<cv::Mat> imagesVector;
    std::vector<float> timesVector;
    for (int i = 0; i < images.count; i++) {
        UIImage * imageToUse = images[i];

        UIImageWriteToSavedPhotosAlbum(imageToUse, nil, nil, nil);
    }

    //some traitment
    return response;
}

当我使用UIImageWriteToSavedPhotosAlbum函数时,我的图片已经被压缩,但是我不知道为什么,文件的重量也很小,以获得高质量的文件!

我应该怎么做才能在1920x1080分辨率下获得全部分辨率?

也许带有AVCapturePhotoSettings?

谢谢!

0 个答案:

没有答案