Próbuję użyć OpenCV 2.1, aby połączyć dwa obrazy w jeden, z dwoma obrazami umieszczonymi obok siebie. W Pythonie, robię:Łączenie dwóch obrazów z OpenCV
import numpy as np, cv
img1 = cv.LoadImage(fn1, 0)
img2 = cv.LoadImage(fn2, 0)
h1, w1 = img1.height,img1.width
h2, w2 = img2.height,img2.width
# Create an array big enough to hold both images next to each other.
vis = np.zeros((max(h1, h2), w1+w2), np.float32)
mat1 = cv.CreateMat(img1.height,img1.width, cv.CV_32FC1)
cv.Convert(img1, mat1)
mat2 = cv.CreateMat(img2.height, img2.width, cv.CV_32FC1)
cv.Convert(img2, mat2)
# Copy both images into the composite image.
vis[:h1, :w1] = mat1
vis[:h2, w1:w1+w2] = mat2
h,w = vis.shape
vis2 = cv.CreateMat(h, w, cv.CV_32FC3)
vis0 = cv.fromarray(vis)
cv.CvtColor(vis0, vis2, cv.CV_GRAY2BGR)
cv.ShowImage('test', vis2)
cv.WaitKey()
Oba obrazy są wejściowe:
https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/c/box.png?rev=2270
https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/c/box_in_scene.png?rev=2270
Uzyskany obraz jest:
It może być trudne do d odróżnia się od reszty strony, ale większość obrazu jest biała, co odpowiada miejscu, w którym powinny znajdować się poszczególne obrazy. Czarny obszar to miejsce, w którym nie zapisano danych obrazu.
Dlaczego wszystkie moje dane obrazu są konwertowane na biały?
Widziałeś [find_obj.py próbki] (https://code.ros.org/trac/opencv/browser/trunk/opencv/ samples/python2/find_obj.py) z OpenCV 2.3.1? Wygląda dokładnie tak, jak próbujesz to zrobić. –
@Andrey, tak, właśnie to próbuję przekonwertować na OpenCV 2.1. Nie mam 2.3 i nie mogę go skompilować, więc na razie pracuję z wersją 2.1. – Cerin
Możesz również utworzyć pytanie dotyczące problemu z kompilacją. Myślę, że to rozwiązalne. I proszę zauważyć, że część flann z tego przykładu nie może być zaimplementowana z OpenCV 2.1, ponieważ powiązania Pythona dla indeksu flann zostały dodane tylko w 2.3.1. –