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()