Je compris cela en ajoutant un garde avant la CALayer ajouter
Avant Voir ne charge
@IBOutlet weak var scanAreaImage: UIImageView!
var regionOfInterest: CGRect!
Dans la vue a fait la charge scanAreaImage.frame est une vue de l'image que je mets via story-board et ceci représenterait la zone que je voulais seulement détecter dans,
let someRect: CGRect = scanAreaImage.frame
regionOfInterest = someRect
puis dans la section de détection de texte de vision. Ceci montrera seulement les contours des choses à l'intérieur du rectangle que vous avez créé dans le storyboard.
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)
(Mine étant le scanAreaImage)
J'espère que cela aide quelqu'un.
Une chose que vous venez avec, j'essaie de faire la même chose maintenant? – djay
J'ai fait de mon mieux pour mettre un garde dans la zone de détection. Créez donc un cgrect si la largeur et la hauteur du texte xCord yCord dans la fonction de mise en surbrillance de la lettre créent ensuite un autre cgrect pour votre texte d'intérêt pour la zone que vous voulez seulement voir. Ensuite, utilisez guard 2ndcgrect.contains (1stcgrect.origin) sinon {return} mettez ceci avant de voir le calque, cela ne fera que mettre des contours autour de la chose dans le texte d'intérêt .. https://medium.com/@tonymerritt/hi-peng -27ff127cd659? Source = linkShare-8fa3bb4b8b91-1511567697 Je l'ai posté ici aussi dans les commentaires –
@djay J'ai aussi posté ma réponse à ceci afin que vous puissiez le voir correctement –