图像处理-图像拼接

1、问题描述

在使用opencv的imshow方法时,需要一次性展示较多图像。

2、解决方案

对于数字图像,本质上还是数组,因此为了达到图像拼接的效果,使用cv2自带的hconcat(horizontal),vconcat(vertical)。方法。使用numpy自带的数组拼接函数即可,hstack(水平拼接),vstack(垂直拼接)。或者c_(水平拼接),r_(竖直拼接)。

3、代码实现

3.1 彩色图像

彩色图像是三维数组,因此不能仅仅使用np对二维数组的操作方法,而是使用hconcat(水平粘连),vconcat(垂直粘连)的方法。

def Retraction(image):
    Image = np.copy(image)
    NearestImage = cv.resize(src=Image,dsize=dsize1,interpolation=cv.INTER_NEAREST)
    CubicImage = cv.resize(src=Image,dsize=dsize1,interpolation=cv.INTER_CUBIC)
    LanczosImage = cv.resize(src=Image,dsize=dsize1,interpolation=cv.INTER_LANCZOS4)
	
	#核心是这一句,上面的做过插值处理的图像,不重要,本质上还是图像。注意(v)hconcat函数里面还有一个括号。
    temp1 = cv.hconcat((NearestImage,CubicImage,LanczosImage))
    temp2 = cv.vconcat((NearestImage,CubicImage,LanczosImage))
    cv.imshow("temp",temp2)
    cv.waitKey()

    return;

3.2 灰度图像


def gamma_transformation(image):
    c1 = 5
    c2 = 5
    c3 = 5
    gamma1 = 0.9
    gamma2 = 1.8
    gamma3 = 2.7

    cImage = np.copy(image/255.0)
    GTImage1 = c1 * np.power(cImage,gamma1)
    GTImage2 = c2 * np.power(cImage, gamma2)
    GTImage3 = c3 * np.power(cImage, gamma3)

    img1 = np.c_[cImage,GTImage1]
    img2 = np.c_[GTImage2,GTImage3]
    img = np.r_[img1,img2]
    
    """
    img1 = np.hstack(cImage,GTImage1)
    img2 = np.hstack(GTImage2,GTImage3)
    img = np.vstack(img1,img2)
    """

    cv.imshow('Result',img)
    cv.waitKey()

4、效果呈现

4.1 彩色图像

在这里插入图片描述

4.2 灰度图像

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xdg15294969271/article/details/121149768