Ich arbeite an dem Zusammenfügen mehrerer Bilder mit OpenCV. Es fängt an zu arbeiten, aber ich habe ein Problem mit einer Sache. Nach cv2.warpPerspective
Bild hat eine "weiche" Grenzen, was bedeutet, dass berechnete Maske ein Pixel zu groß ist.Bildstichartefakt [OpenCV Python]
Mein Code:
# apply a perspective warp to stitch the images
# together
result = cv2.warpPerspective(imageA, H,
(imageA.shape[1] + imageB.shape[1], imageA.shape[0]))
# Now create a mask of logo and create its inverse mask also
img2gray = cv2.cvtColor(result,cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img2gray, 0, 255, cv2.THRESH_BINARY)
mask_inv = cv2.bitwise_not(mask)
resizedB = np.zeros((result.shape[0],result.shape[1],3), np.uint8)
resizedB[0:imageB.shape[0], 0:imageB.shape[1]] = imageB
difference = cv2.bitwise_or(resizedB,result, mask=mask_inv)
result = cv2.add(result,difference)
cv2.imwrite('result .jpg', result)
Ich hatte cv2.bitwise_or
zu verwenden, da das Hinzufügen beider Bilder cv2.add
macht es zu hell, die an der Verbindung eine fast schwarze Linie gemacht. Haben Sie eine Idee, wie Sie das beheben können? Vielleicht gibt es eine Möglichkeit, die Maske so zu modifizieren, dass sie 1 Pixel kleiner wird?
Sie könnten eine Verlaufsmaske verwenden, wo der Übergang ist, mit anderen Worten, beiden Verbindungsseiten Mischen – Pedro
Gibt es eine Möglichkeit, eine Verlaufsmaske mit Farbschwelle zu erhalten? Ich glaube nicht, dass es da ist. Kennen Sie einen anderen Weg, um eine Maske mit einem gegebenen Bild zu erhalten? – Ekci
können Sie die Entfernung von der Bildgrenze ähnlich http://StackOverflow.com/Questions/37911062/How-to-Baint-the-Right-Alpha-Wert-to-Perfekt-blend-two-images/37918596# berechnen 37918596 und benutze das als Mischmaske – Micka