subtrahieren Sie ein Bild von einem anderen mit openCV

7

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

    
marionmaiden 23.03.2010, 17:02
quelle

4 Antworten

5

Verwenden Sie LoadImage , um Ihre Bilder in den Speicher zu laden, und verwenden Sie dann die Methode Sub .

Dieser Link enthält einen Beispielcode, wenn das hilft: Ссылка

    
Justin Ethier 23.03.2010, 17:41
quelle
13
%Vor%

Ändern Sie die Bildnamen. Stellen Sie außerdem sicher, dass sie dieselbe Größe haben.

    
Dat Chu 30.03.2010 22:46
quelle
3

Verwenden Sie die Methode cv :: subtract ().

%Vor%

Dies führt eine elementweise Subtraktion von (img1-img2) durch. Sie können mehr Details über sie Ссылка

finden     
ssh99 11.06.2015 20:05
quelle
0

Anstatt diff oder einfach nur Subtraktion im1-im2 zu verwenden, würde ich lieber die OpenCV Methode cv::absdiff

vorschlagen %Vor%

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] .

    
John Smith 20.02.2018 11:18
quelle

Tags und Links