Масштабирование изображения CVPixelBuffer или CGImage для быстрого набора 0-255 - PullRequest
0 голосов
/ 07 ноября 2018

Я встраиваю сеть сегментации изображений в приложение swift. Модель отвечает изображением в градациях серого вместо 0-255 и выводит значения в диапазоне 0-1.

Есть ли способ заставить coremltools генерировать mlmodels, которые изменяют масштаб отклика модели на 0-255, как это возможно на входе?

Может быть, есть способ сделать это в быстром коде? Я получаю CVPixelBuffer от модели и преобразую его в CGImage, чтобы отобразить его в UIImageView. Выход в диапазоне 0-1 выглядит как черный. Есть ли какой-либо готовый метод для изменения масштаба до 0-255, чтобы его можно было отобразить?

Вот мой код: расширение CVPixelBuffer {

func toCGImage() -> CGImage?{  
    CVPixelBufferLockBaseAddress(self, .readOnly)  
    let width = CVPixelBufferGetWidth(self)  
    let height = CVPixelBufferGetHeight(self)  
    let data = CVPixelBufferGetBaseAddress(self)!  


    let outContext = CGContext(data: data,  
                               width: width,  
                               height: height,  
                               bitsPerComponent: 8,  
                               bytesPerRow: CVPixelBufferGetBytesPerRow(self),  
                               space: CGColorSpaceCreateDeviceGray(),  
                               bitmapInfo: CGImageAlphaInfo.none.rawValue)!  
//                                    space: CGColorSpaceCreateDeviceRGB(),  
//                                    bitmapInfo: CGImageByteOrderInfo.order32Little.rawValue | CGImageAlphaInfo.noneSkipFirst.rawValue)!  
//        outContext.translateBy(x: 0, y: 1)  
//        outContext.scaleBy(x: 0, y: 255)  
    let outImage = outContext.makeImage()!  
    CVPixelBufferUnlockBaseAddress(self, .readOnly)  

    return outImage  
}     
} 

экспериментировал с bitmapinfo в качестве orderMask, но это только приложение для сбоя.

bitmapInfo: CGImageByteOrderInfo.orderMask.rawValue | CGImageAlphaInfo.noneSkipFirst.rawValue)! 

Я отправляю ответ модели в UIImageView так:

        DispatchQueue.main.async {  
        self.imageView?.image = UIImage(cgImage: cgImage)  
        }  

Пожалуйста, помогите, спасибо

...