Wie kann ich mit openCV ein Bild von einem anderen subtrahieren?
Ps .: Ich konnte die Python-Implementierung nicht verwenden, da ich es in C ++ machen muss
Anstatt diff
oder einfach nur Subtraktion im1-im2
zu verwenden, würde ich lieber die OpenCV Methode cv::absdiff
Da Bilder normalerweise in unsignierten Formaten gespeichert werden, werden die negativen Differenzen durch die Subtraktionsmethoden @Dat und @ ssh99 eliminiert. Wenn beispielsweise ein Pixel eines BMP-Bildes den Wert [20, 50, 30]
für im1
und [70, 80, 90]
für im2
aufweist, wird mit im1 - im2
und diff(im1, im2, diff)
der Wert [0,0,0]
erzeugt, da 20-70 = -50
, 50-80 = -30
, 30-90 = -60
und alle negativen Ergebnisse werden in vorzeichenlosen Wert von 0
konvertiert, was in den meisten Fällen nicht das ist, was Sie wollen. Die Methode absdiff
berechnet stattdessen die absoluten Werte aller Subtraktionen und erzeugt somit eine vernünftigere [50,30,60]
.
Tags und Links c++ opencv image subtraction