2017-02-23 1 views
0

J'ai un UIImageView dans mon projet Xcode. J'essaie de trouver un moyen de détecter CERTAINES couleurs (par exemple, une nuance de rouge) dans une image. Je n'arrive pas à trouver un moyen de le faire. Est-ce que quelqu'un sait comment cela pourrait être réalisé?Recherche d'une valeur de couleur spécifique dans un UIImage

J'ai vu différentes façons de trouver la "couleur moyenne" dans la photo. Je me demande s'il existe un moyen de "détecter" spécifiquement une certaine couleur qui peut être dans une image.

Par exemple, dans cette image, il y a un moyen de détecter qu'il y a cette couleur de rouge dans la photo. Blue and Red Rectangles

Merci

+0

Vous avez vraiment pas assez donné détail. Par exemple, quel code avez-vous essayé? Plus, que * spécifiquement * avez-vous besoin? Demandez-vous de "gratter" une image et obtenir la couleur "moyenne"? Ou sur un certain CGRect? Ou devrais-je demander "qu'est-ce qui est rouge"? Je ne vois pas (encore) de raison pour signaler un "trop ​​vague", mais @ Pickle2113, peut ** vous ** voir comment mal (jusqu'à présent) vous avez posé votre question? – dfd

+0

Vous devrez parcourir chaque pixel de l'image et le comparer à la couleur que vous recherchez. Il n'y a pas un moyen facile de le faire avec UIImage mais essayez ici http://stackoverflow.com/questions/40158320/swift-3-get-color-of-pixel-in-uiimage-better-uiimageview –

+0

Est-ce que cela fait au moins un peu plus de sens? Si ce n'est pas le cas, dites-moi et je vais essayer d'ajouter plus d'informations à nouveau. Pardon. Je suis définitivement nouveau ici et je cherche juste de l'aide. – Pickle2113

Répondre

0

Essayez cette

l'extension UIImage { func getPixelColor (pos: CGPoint) -> {UIColor

 let pixelData = CGDataProviderCopyData(CGImageGetDataProvider(self.CGImage)) 
     let data: UnsafePointer<UInt8> = CFDataGetBytePtr(pixelData) 

     let pixelInfo: Int = ((Int(self.size.width) * Int(pos.y)) + Int(pos.x)) * 4 

     let r = CGFloat(data[pixelInfo])/CGFloat(255.0) 
     let g = CGFloat(data[pixelInfo+1])/CGFloat(255.0) 
     let b = CGFloat(data[pixelInfo+2])/CGFloat(255.0) 
     let a = CGFloat(data[pixelInfo+3])/CGFloat(255.0) 

     return UIColor(red: r, green: g, blue: b, alpha: a) 
    } 

}