Я использую следующее для обнаружения прямоугольников на этом изображении: https://richardzhaodesign.files.wordpress.com/2015/02/order-final.jpg?w=300&h=300
import UIKit
import Vision
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
guard let image = UIImage(named: "sample2") else { return }
let imageView = UIImageView(image: image)
imageView.contentMode = .scaleAspectFit
let scaledHeight = view.frame.width / image.size.width * image.size.height
imageView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: scaledHeight)
imageView.backgroundColor = .blue
view.addSubview(imageView)
let request = VNDetectRectanglesRequest { (req, err) in
if let err = err {
print("Failed to detect faces:", err)
return
}
req.results?.forEach({ (res) in
print("one")
DispatchQueue.main.async {
guard let rectangleObservation = res as? VNRectangleObservation else { return }
let x = self.view.frame.width * rectangleObservation.boundingBox.origin.x
let height = scaledHeight * rectangleObservation.boundingBox.height
let y = scaledHeight * (1 - rectangleObservation.boundingBox.origin.y) - height
let width = self.view.frame.width * rectangleObservation.boundingBox.width
let redView = UIView()
redView.layer.borderColor = UIColor.red.cgColor
redView.layer.borderWidth = 5
redView.frame = CGRect(x: x, y: y, width: width, height: height)
self.view.addSubview(redView)
}
})
}
guard let cgImage = image.cgImage else { return }
DispatchQueue.global(qos: .background).async {
let handler = VNImageRequestHandler(cgImage: cgImage, options: [:])
do {
try handler.perform([request])
} catch let reqErr {
print("Failed to perform request:", reqErr)
}
}
}
}
Мой вопрос заключается в том, почему это не распознает два квадрата.Я видел, как другие коды распознают несколько прямоугольников, но мой всегда распознает только один.Я уверен, что это не значит, что платформа Vision не способна распознавать другую с высокой точностью, просто я что-то упускаю в своем коде.Спасибо тебе.