Sie werden genau zur gleichen Zeit genommen und wie Sie sehen können, haben sie unterschiedliche Perspektiven. Ich erkenne, dass ich dies erreichen kann, indem ich zwei Fotos in verschiedenen Winkeln aus derselben Kameraposition aufnehme, aber in diesem Fall suche ich speziell nach einer Lösung mit verschiedenen Kamerapositionen. < /P>
Wenn ich stische sie mit diesem Code: < /p>
Code: Select all
images = []
image1 = cv2.imread('./VideosToStitch/video2.png')
images.append(image1)
image2 = cv2.imread('./VideosToStitch/video1.png')
images.append(image2)
stitcher = cv2.Stitcher.create()
status, stitched = stitcher.stitch(images,cv2.Stitcher_PANORAMA)
cv2.imwrite('./VideosToStitch/stitched.png', stitched)
< /p>
Die beiden blauen Linien sehen gut aus, aber wie Sie sehen können, ist die rote Linie kaputt. Ich dachte, ich könnte vielleicht zuerst eine Perspektive -Transformation auf die Bilder anwenden und sie dann nähen, aber wenn ich die Warp -Perspektive anwende, bekomme ich Folgendes: < /p>
Code: Select all
image1 = cv2.imread('./VideosToStitch/video1.png')
tl = (907,0)
bl = (0,1280)
tr = (1047,0)
br = (1920,1280)
pts1 = np.float32([tl,bl,tr,br])
pts2 = np.float32([[0,0],[0,1280],[1920,0],[1920,1280]])
matrix = cv2.getPerspectiveTransform(pts1,pts2)
transformedFrame = cv2.warpPerspective(image1, matrix,(1920,1280), flags=3)
Hier Sie können sehen, dass die roten und blauen Linien jetzt gerade sind, aber ich habe alle Details auf der Eisfläche verloren. Dies könnte funktionieren, wenn es möglich ist, die Transformation nur in der horizontalen Achse anzuwenden, und nicht in der vertikalen Achse. Oder alternativ könnte ich sie nähen, damit das resultierende Bild gekrümmt ist, und es dann begradigen. < /P>
Gedanken? Kommentare unten, hier ist das Ergebnis, wenn ich die Perspektive anpasse, damit die Eisoberflächenlinien sowohl horizontal als auch vertikal ausrichten. Wie Sie sehen, werden die Spieler, die senkrecht zur Oberfläche sind .png " /> < /p>