OpenCV: Come disegnare una linea con i colori che sono invertita relativamente alla superficie deve essere disegnato su?

StackOverflow https://stackoverflow.com/questions/4266316

Domanda

Quindi abbiamo un'immagine. Vogliamo tracciare una linea che deve assolutamente essere visto. Così come disegnare una linee con colori che sono invertiti relativamente alla superficie deve essere disegnato su in ogni punto?

È stato utile?

Soluzione

Utilizzare un LineIterator e XOR i valori di colore di ciascun pixel manualmente .

Altri suggerimenti

Il trucco XOR è banalmente diversa. Non è visivamente il più distinto, però, se non altro perché ignora del tutto gli occhi come umani lavoro. Ad esempio, il grigi chiari, un colore rosso saturo è visivamente ben distinti.

Si potrebbe voler convertire il colore di HSV e controllare la saturazione di S. Se bassa (scala di grigi), disegnare un pixel rosso. Se la saturazione è elevata, la tonalità è abbastanza ovvio, e un pixel bianco o nero starà fuori. Uso nero (V = 0) se il pixel originale aveva un elevato V; utilizzare il bianco se il pixel originale aveva una bassa V (scuro saturi colore)

È possibile utilizzare il metodo LineIterator come suggerito in precedenza.

(a proposito, il trucco XOR ha casi molto male anche. 0x7F ^ 0xFF = 0x80. Questo è sanguinosa difficile vedere)

Questa è dalla parte superiore della mia testa e io non sono un c ++ dev, ma dovrebbe essere possibile per disegnare la linea in un'immagine separata e una modalità invertito miscela poi mimica ... in fondo è necessario per ottenere il 'negativo' / colore invertito dietro un pixel, che si ottiene sottraendo il colore muggito vostra linea dal valore di colore massima.

Qualcosa di simile:

uint invert(uint topPixel, uint bottomPixel) {
            return (255 - bottomPixel);
}

Non sicuro come se i colori sono da 0 a 255 o da 0,0 a 1,0, ma spero che questo illustra l'idea.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top