Обнаруживать только в разделе слоя предварительного просмотра камеры, iOS, Swift
Я пытаюсь получить зону обнаружения в режиме предварительного просмотра на слое предварительного просмотра камеры.
Возможно ли для этого, скажем, что есть прямая трансляция, и у вас включено распознавание лица, и, когда вы осматриваетесь, она только помещает рамку вокруг лица в определенной области, например, прямоугольник в центре экрана. все другие лица в окне предварительного просмотра, находящиеся за пределами прямоугольника, не обнаруживаются?
Я использую Vision, iOS, Swift.
1 ответ
Я понял это, добавив охрану перед добавлением CALayer
Перед просмотром сделал загрузку
@IBOutlet weak var scanAreaImage: UIImageView!
var regionOfInterest: CGRect!
В представлении загрузил scanAreaImage.frame - это представление изображения, которое я вставил через раскадровку, и оно будет представлять область, в которой я хотел только обнаружение,
let someRect: CGRect = scanAreaImage.frame
regionOfInterest = someRect
затем в разделе обнаружения текста видения.
func highlightLetters(box: VNRectangleObservation) {
let xCord = box.topLeft.x * (cameraPreviewlayer?.frame.size.width)!
let yCord = (1 - box.topLeft.y) * (cameraPreviewlayer?.frame.size.height)!
let width = (box.topRight.x - box.bottomLeft.x) * (cameraPreviewlayer?.frame.size.width)!
let height = (box.topLeft.y - box.bottomLeft.y) * (cameraPreviewlayer?.frame.size.height)!
// This is the section I Added for the rec of interest detection zone.
//////////////////////////////////////////////
let wordRect = CGRect(x: xCord, y: yCord, width: width, height: height)
guard regionOfInterest.contains(wordRect.origin) else { return } // only draw a box if the orgin of the word box is within the regionOfInterest
// regionOfInterest being the cgRect you created earlier
//////////////////////////////////////////////
let outline = CALayer()
outline.frame = CGRect(x: xCord, y: yCord, width: width, height: height)
outline.borderWidth = 1.0
if textColour == 1 {
outline.borderColor = UIColor.blue.cgColor
}else {
outline.borderColor = UIColor.clear.cgColor
}
cameraPreviewlayer?.addSublayer(outline)
это только покажет контуры вещей внутри прямоугольника, который вы создали в раскадровке. (Мое время является scanAreaImage)
Я надеюсь, что это помогает кому-то.