Skip to content

Instantly share code, notes, and snippets.

@yusuke024
Created July 3, 2017 00:55
Show Gist options
  • Save yusuke024/123ee4487e7f56b01f558b9d30c7a253 to your computer and use it in GitHub Desktop.
Save yusuke024/123ee4487e7f56b01f558b9d30c7a253 to your computer and use it in GitHub Desktop.
//: A UIKit based Playground to present user interface
import UIKit
import Vision
import PlaygroundSupport
class ViewController : UIViewController {
let imageView = UIImageView()
let overlayImageView = UIImageView()
override func loadView() {
let view = UIView()
view.backgroundColor = .white
imageView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
imageView.frame = view.bounds
imageView.contentMode = .scaleAspectFit
view.addSubview(imageView)
overlayImageView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
overlayImageView.frame = view.bounds
overlayImageView.contentMode = .scaleAspectFit
view.addSubview(overlayImageView)
self.view = view
}
}
let viewController = ViewController()
let image = #imageLiteral(resourceName: "sample02.jpg")
viewController.imageView.image = image
guard let cgImage = image.cgImage else {
fatalError()
}
let size = image.size
let request = VNDetectTextRectanglesRequest { request, error in
guard error == nil else {
fatalError()
}
guard let observations = request.results as? [VNDetectedObjectObservation] else {
fatalError()
}
let renderer = UIGraphicsImageRenderer(size: size)
let boxes = observations
.map({ $0.boundingBox.applying(CGAffineTransform(scaleX: size.width, y: size.height)) })
viewController.overlayImageView.image = renderer.image { context in
UIColor.red.setStroke()
for box in boxes {
var newBox = box
newBox.origin.y = size.height - box.maxY
context.stroke(newBox)
}
}
}
let handler = VNImageRequestHandler(cgImage: cgImage, options: [:])
try! handler.perform([request])
PlaygroundPage.current.liveView = viewController
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment