Ho 2 foto che voglio confrontare, se il colore dei pixel è lo stesso per salvarlo. rilevo il colore del pixel da questa funzione UIImage
estensione:Swift - Confronta i colori su CGPoint
func getPixelColor(pos: CGPoint) -> ??? {
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 ???
}
Per esempio, ho eseguito lo scanner sulla foto 1 e salvarlo in un array? O dizionario? E dopo eseguo lo scanner sull'immagine 2 e quando ho le informazioni da 2 immagini per confrontarlo con quale funzione?
Voglio vedere in quale CGPoint i colori dei pixel sono identici a partire da 2 immagini?
UPDATE: aggiorno getPixelColor per me tornare "(pos) (r) (g) (b) (a)" e dopo che ho creato questa funzione che ha lasciato solo duplicati (PRIMA DI UTILIZZARE QUESTA FUNZIONE DOVETE. sort() la matrice)
extension Array where Element : Equatable {
var duplicates: [Element] {
var arr:[Element] = []
var start = 0
var start2 = 1
for _ in 0...self.count{
if(start2<self.count){
if(self[start] == self[start2]){
if(arr.contains(self[start])==false){
arr.append(self[start])
}
}
start+=1
start2+=1
}
}
return arr
}
}
questo mi torna qualcosa di simile: "(609,0, 47,0) 1.01.01.01.0" so che il colore è nero, a questo punto faccio x-536 a in forma lo schermo di iPhone 5 e quando faccio un tentativo di disegnarlo di nuovo disegna qualcosa di sbagliato ... forse non riesco a farlo correttamente .. aiuto?
ritorno un 'UIColor', e verificare se sono uguali? Si noti che la differenza tra i colori è un argomento discusso con un approccio molto diverso. – Larme
anche - stai controllando ogni singolo pixel? Se stai eseguendo la scansione di queste immagini, non penso che tu abbia molte possibilità di renderle allineate pixel-perfette, anche prima di iniziare a preoccuparti di scandire ogni colore corretto a 1/255 in ogni dimensione. – Russell
UIColor non è conforme al protocollo lavabile ... Alcuni pixel sono identici al 100%, voglio vedere su quali CGPoint sono identici ... –