画像をモデル画像サイズに変換したい。APIを使用して画像を取得しています。これがコードです。
let model = GoogLeNetPlaces()
var selectImage: BaseModel!
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: selectImage.fullURL)
let imageData = NSData(contentsOf: url!)
detailImageView.image = UIImage(data: imageData! as Data)
if let imageToAnalyze = detailImageView.image {
if let data = sceneLabel(forImage: imageToAnalyze) {
imageLabel.text = data
}
}
}
func sceneLabel(forImage image:UIImage) -> String? {
if let pixel = ImageProcessor.pixelBuffer(forImage: image.cgImage!){
guard let scene = try? model.prediction(sceneImage: pixel) else { fatalError("error")}
return scene.sceneLabel
}
return nil
}
そして、これは私が画像サイズ変換に使用しているコードです。
struct ImageProcessor {
static func pixelBuffer (forImage image:CGImage) -> CVPixelBuffer? {
let frameSize = CGSize(width: image.width, height: image.height)
var pixelBuffer:CVPixelBuffer? = nil
let status = CVPixelBufferCreate(kCFAllocatorDefault, Int(frameSize.width), Int(frameSize.height), kCVPixelFormatType_32BGRA , nil, &pixelBuffer)
if status != kCVReturnSuccess {
return nil
}
CVPixelBufferLockBaseAddress(pixelBuffer!, CVPixelBufferLockFlags.init(rawValue: 0))
let data = CVPixelBufferGetBaseAddress(pixelBuffer!)
let rgbColorSpace = CGColorSpaceCreateDeviceRGB()
let bitmapInfo = CGBitmapInfo(rawValue: CGBitmapInfo.byteOrder32Little.rawValue | CGImageAlphaInfo.premultipliedFirst.rawValue)
let context = CGContext(data: data, width: Int(frameSize.width), height: Int(frameSize.height), bitsPerComponent: 8, bytesPerRow: CVPixelBufferGetBytesPerRow(pixelBuffer!), space: rgbColorSpace, bitmapInfo: bitmapInfo.rawValue)
context?.draw(image, in: CGRect(x: 0, y: 0, width: image.width, height: image.height))
CVPixelBufferUnlockBaseAddress(pixelBuffer!, CVPixelBufferLockFlags(rawValue: 0))
return pixelBuffer
}
}
サイズのエラーが出ます。
画像サイズがモデル画像サイズに変換されていません。
誰でもこれで私を助けることができますか?
これは私が得ているエラーです
[coreml] エラー Domain=com.apple.CoreML Code=1 「入力画像機能のシーン画像がモデルの説明と一致しません」 UserInfo={NSLocalizedDescription=入力画像機能のシーン画像がモデルの説明と一致しません, NSUnderlyingError=0x6000006a1d40 {エラー ドメイン=com.apple .CoreML Code=0 "画像サイズ 3829 x 2411 は許可された画像サイズのセットにありません" UserInfo={NSLocalizedDescription=画像サイズ 3829 x 2411 は許可された画像サイズのセットにありません}}}