使用OpenCV合并两个图像
使用OpenCV合并两个图像
我正在尝试使用OpenCV 2.1将两张图片合并为一张图片,并将这两张图片相邻放置。在Python中,我正在这样做:
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 # 创建足够大的数组,以便将两张图片放在一起。 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 ) # 将两张图片复制到合成图像中。 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()
两张输入图片为:
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
生成的图片为:
可能很难与网站的其他部分区分开,但大部分图片是白色的,对应于各个图片应该在的位置。黑色区域是没有写入图像数据的地方。
为什么所有的图像数据都被转换为白色?