OpenCV 函数学习10-图像的拼接(np.hstack)

10. 图像的拼接(np.hstack)

用 Numpy 的数组堆叠方法可以进行图像的拼接,操作简单方便。

方法说明:

retval = numpy.hstack((img1, img2, …)) # 水平拼接
retval = numpy.vstack((img1, img2, …)) # 垂直拼接

  • np.hstack() 按水平方向(列顺序)拼接 2个或多个图像,图像的高度(数组的行)必须相同。
  • np.vstack() 按垂直方向(行顺序)拼接 2个或多个图像,图像的宽度(数组的列)必须相同。
  • 综合使用 np.hstack() 和 np.vstack() 函数,可以实现图像的矩阵拼接。
  • np.hstack() 和 np.vstack() 只是简单地将几张图像直接堆叠而连成一张图像,并未对图像进行特征提取和边缘处理,因而并不能实现图像的全景拼接。

参数说明:

  • img1, img2, …:拼接前的图像,nparray 多维数组
  • 返回值 retval:拼接后的图像,nparray 多维数组

基本例程:

    # 1.18 图像拼接
    img1 = cv2.imread("../images/imgLena.tif")  # 读取彩色图像(BGR)
    img2 = cv2.imread("../images/logoCV.png")  # 读取彩色图像(BGR)
    img1 = cv2.resize(img1, (400, 400))
    img2 = cv2.resize(img2, (300, 400))
    img3 = cv2.resize(img2, (400, 300))
    imgStackH = np.hstack((img1, img2))  # 高度相同图像可以横向水平拼接
    imgStackV = np.vstack((img1, img3))  # 宽度相同图像可以纵向垂直拼接

    print("Horizontal stack:\nShape of img1, img2 and imgStackH: ", img1.shape, img2.shape, imgStackH.shape)
    print("Vertical stack:\nShape of img1, img3 and imgStackV: ", img1.shape, img3.shape, imgStackV.shape)
    cv2.imshow("DemoStackH", imgStackH)  # 在窗口显示图像 imgStackH
    cv2.imshow("DemoStackV", imgStackV)  # 在窗口显示图像 imgStackV
    key = cv2.waitKey(0)  # 等待按键命令

本例程的运行结果如下:

Horizontal stack:
Shape of img1, img2 and imgStackH:  (400, 400, 3) (400, 300, 3) (400, 700, 3)
Vertical stack:
Shape of img1, img3 and imgStackV:  (400, 400, 3) (300, 400, 3) (700, 400, 3)

OpenCV 函数学习10-图像的拼接(np.hstack)_第1张图片

你可能感兴趣的:(OpenCV学习课,opencv,python,图像处理)