Python-OpenCV中图像合并显示

在图像处理中,我们通常需要将原图像与处理后的图像放在同一个窗口显示,这样便于比较。

 

首先,需要介绍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

转载于:https://www.cnblogs.com/lfri/p/10596888.html

你可能感兴趣的:(Python-OpenCV中图像合并显示)