Sto utilizzando la sottrazione dello sfondo per analizzare gli oggetti in movimento di una scena esterna. Quando esce il sole ho un problema con le ombre. Sto usando i contorni per isolare gli oggetti. Al momento analizzo semplicemente la metà superiore del contorno mentre l'ombra si trova normalmente nella metà inferiore.Posizione quota minima contorno OpenCV in python
Immaginate un contorno di un'anatra di gomma, quello che mi piacerebbe fare è trovare la posizione del collo dell'anatra, cioè il punto in cui il contorno si trova nella sua minima dimensione orizzontale. Qualcuno potrebbe indicarmi la giusta direzione su come trovare il "collo dell'anatra"?
Nel codice, binary
è un'immagine soglia degli oggetti in movimento, e HIGHT
WIDTH
sono l'altezza e la larghezza dell'immagine, lab
è la stessa immagine nello spazio colore LAB.
Desidero sostituire la linea half = int(h/2)
con una funzione per trovare la posizione y di una linea orizzontale per tagliare il "collo ducks".
_,contours,_ = cv2.findContours(binary.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
# loop over the contours
for i, cnt in enumerate(contours):
# compute the bounding box for the contour
(x, y, w, h) = cv2.boundingRect(cnt)
# reject contours outside size range
if w > 250 or w < 30 or h > 250 or h < 30 :
continue
# make sure the box is inside the frame
if x <= 0 or y <= 0 or x+w >= (WIDTH -1) or y+h >= (HIGHT -1):
continue
# isolate feature
half = int(h/2)
roi = lab[y:y+half, x:x+w]
mask = binary[y:y+half, x:x+w]
# calculate the mean of the colour
mean = cv2.mean(roi, mask = mask)
# note: mean is L a b
L = int(mean[0])
a = int(mean[1])
b = int(mean[2])
print L,a,b
Sto usando OpenCV 3 e pitone 2.7
P.S. Ho provato lo sottrattore di sfondo MOG2 che si dice identifichi le ombre ma è un modo rumoroso per il mio uso e non praticabile.
Aggiungi alla tua domanda alcune immagini con risultati effettivi e previsti. Fai clic sul link di modifica sotto i tag. Non hai abbastanza reputazione per aggiungere immagini, ma puoi pubblicare un link pubblico da imgur o simili. – Miki
Ciao Miki, ho aggiunto uno schizzo che dovrebbe aiutare a chiarire, per favore sentiti libero di chiedere qualsiasi altra cosa. Ho pensato a 3 possibili soluzioni, 1) In qualche modo uso i momenti, 2) scorrere l'elenco dei contorni per trovare i punti di svolta, 3) Sommare le righe orizzontalmente per ottenere un profilo e quindi trovare i punti di svolta del profilo. I primi due non ne ho idea, quindi un aiuto su come utilizzare i momenti o su come accedere e interpretare la lista dei contorni sarebbe di grande aiuto. O qualsiasi altro suggerimento sarebbe molto apprezzato. – Johno
Ci scusiamo per il dolore quando stai cercando di fare come richiesto, ma per favore evita Dropbox/altri collegamenti transitori se possibile - vogliamo che queste domande aiutino le persone per anni e, se in futuro eliminerai il tuo file dropbox, farebbe questa domanda è meno preziosa SO Avere un accordo con imgur per assicurarsi che tutte le immagini saranno in giro per la durata. L'ho fatto per te in questo caso. Spero che trovi la tua risposta! – Basic