在图像处理中,我们通常需要将原图像与处理后的图像放在同一个窗口显示,这样便于比较。
首先,需要介绍Numpy中的两个函数:hstack()、vstack()。
函数原型:hstack(tup) ,参数tup可以是元组,列表,或者numpy数组,返回结果为numpy的数组。看下面的代码体会它的含义:
import numpy as np a=[1,2,3] b=[4,5,6] print(np.hstack((a,b))) 输出:[1 2 3 4 5 6 ]
import numpy as np a=[[1],[2],[3]] b=[[1],[2],[3]] c=[[1],[2],[3]] d=[[1],[2],[3]] print(np.hstack((a,b,c,d))) 输出: [[1 1 1 1] [2 2 2 2] [3 3 3 3]]
它其实就是水平(按列顺序)把数组给堆叠起来,vstack()函数正好和它相反。
import numpy as np a=[1,2,3] b=[4,5,6] print(np.hstack((a,b))) 输出:[1 2 3 4 5 6 ]
import numpy as np a=[[1],[2],[3]] b=[[1],[2],[3]] c=[[1],[2],[3]] d=[[1],[2],[3]] print(np.hstack((a,b,c,d))) 输出: [[1 1 1 1] [2 2 2 2] [3 3 3 3]]
这样图像的合并操作就非常简单了,视为二维数组的操作即可(可忽略通道)
import cv2 import numpy as np img = cv2.imread("./Pictures/a.png") img = cv2.resize(img, None, fx=0.5, fy=0.5) #为了完整显示,缩小一倍 blur2 = cv2.blur(img, (2,2)) blur3 = cv2.blur(img, (5,5)) blur4 = cv2.blur(img, (10,10)) htich = np.hstack((img,blur2)) htich2 = np.hstack((blur3,blur4)) vtich = np.vstack((htich, htich2)) cv2.imshow("merged_img", vtich) cv2.waitKey(0) cv2.destroyAllWindows()
效果:
参考链接:
1、https://blog.csdn.net/csdn15698845876/article/details/73380803
2、https://blog.csdn.net/wugui1111/article/details/80706411