5

我正在使用 SimpleCV 拼接图像。我对 SimpleCV 的 GitHub 代码进行了一些更改,最终正确转换了图像。但问题是,变换后的图像颜色发生了变化。

我使用了这些图片http://imgur.com/a/lrGw4。我的代码输出是:http: //i.imgur.com/2J722h.jpg

这是我的代码:

from SimpleCV import *
import cv2
import cv

img1 = Image("s.jpg")
img2 = Image("t.jpg")

dst = Image((2000, 1600))

# Find the keypoints.
ofimg = img1.findKeypointMatch(img2)

# The homography matrix.
homo = ofimg[1]
eh = dst.getMatrix()

# transform the image.
x = Image(cv2.warpPerspective(np.array((img2.getMatrix())), homo,
  (eh.rows, eh.cols+300), np.array(eh), cv.INTER_CUBIC))

# blit the img1 now on coordinate (0, 0).
x = x.blit(img1, alpha=0.4)
x.save("rishi1.jpg")
4

1 回答 1

3

看来您使用的是 SimpleCV 的旧版本。在最新版本中,获得单应矩阵的方法是 [ 1 ]:

ofimg[0].getHomography()

编辑:

您提到的颜色问题似乎是由于颜色空间的变化。因此,请将您扭曲图像的线更改为:

x = Image(cv2.warpPerspective(np.array((img2.getMatrix())), homo,
  (eh.rows, eh.cols+300), np.array(eh), cv.INTER_CUBIC), colorSpace=ColorSpace.RGB).toBGR()

我怀疑发生的事情是变形后返回的图像在 BGR 颜色空间中,而 SimpleCV 默认使用 RGB 颜色空间。请让我知道情况如何。

于 2012-04-16T16:12:57.117 回答