###前提・実現したいこと
環境は以下の通りです
xcode 7.3.1
swift
もし質問におかしな部分やたりない情報があれば、教えていただける助かります
現在カメラで写真を撮って、OpenCVを利用するアプリを考えています。
そこでカメラ機能については
[Swift] [iOS] ズーム、ピント調節可能な無音カメラのサンプル
を参考にさせていただいたのですが、自分では解決できない疑問が生まれたので、ここで質問させていただきました。
このコード通りにして、写真を撮ると縦にサイズの長い写真が保存されます。
OpenCVを利用するのに映る範囲を絞った方がいいと考えたのですが、うまくいきませんでした。
どなたか回答のほどよろしくお願いします
###該当のソースコード
// sampleBufferからUIImageを作成 func captureImage(sampleBuffer:CMSampleBufferRef) -> UIImage{ // Sampling Bufferから画像を取得 let imageBuffer:CVImageBufferRef = CMSampleBufferGetImageBuffer(sampleBuffer)! // pixel buffer のベースアドレスをロック CVPixelBufferLockBaseAddress(imageBuffer, 0) let baseAddress:UnsafeMutablePointer<Void> = CVPixelBufferGetBaseAddressOfPlane(imageBuffer, 0) let bytesPerRow:Int = CVPixelBufferGetBytesPerRow(imageBuffer) let width:Int = CVPixelBufferGetWidth(imageBuffer) let height:Int = CVPixelBufferGetHeight(imageBuffer) // 色空間 let colorSpace:CGColorSpaceRef = CGColorSpaceCreateDeviceRGB()! let newContext:CGContextRef = CGBitmapContextCreate(baseAddress, width, height, 8, bytesPerRow, colorSpace, CGImageAlphaInfo.PremultipliedFirst.rawValue|CGBitmapInfo.ByteOrder32Little.rawValue)! let imageRef:CGImageRef = CGBitmapContextCreateImage(newContext)! let resultImage = UIImage(CGImage: imageRef, scale: 1.0, orientation: UIImageOrientation.Right) return resultImage }
###試したこと
なんとなくCGBitmapContextCreateImageの部分をいじれば、写真の大きさをいじれるのだということはわかったのですが、それから進みません。
縦に長い写真が短くするために試しにheightを0.75倍にしようとしてみたのですが、CGBitmapContextCreateImageがIntをとるため、エラーが出ました。
CVPixelBufferGetHeight()の戻り値もIntであるため、Int()などを使って、計算過程だけDoubleにすることもできませんでした。
解決策をご存知の方がいらしたら、よろしくお願いします
もしくは、どこか方法や考えが適切でないということなら、指摘していただけると勉強になります
回答1件
あなたの回答
tips
プレビュー