如何使用OpenCV连接图像?为了使用 Python 垂直和水平连接图像,cv2 库提供了两个函数实现python图片拼接:
- hconcat():用作 cv2.hconcat() 水平连接图像。这里 h 表示水平。
- vconcat():用作 cv2.vconcat() 垂直连接图像。这里 v 表示垂直。
# import cv2 library
import cv2# read the images
img1 = cv2.imread('sea.jpg')
img2 = cv2.imread('man.jpeg')
如何使用OpenCV连接图像?垂直连接: cv2.vconcat() 用于垂直组合相同宽度的图像。
# vertically concatenates images
# of same width
im_v = cv2.vconcat([
img1, img1])# show the output image
cv2.imshow('sea_image.jpg', im_v)
输出:
文章图片
python图片拼接 - 水平连接: cv2.hconcat() 用于水平连接相同高度的图像。
# horizontally concatenates images
# of same height
im_h = cv2.hconcat([
img2, img2])# show the output image
cv2.imshow('man_image.jpeg', im_h)
输出:
文章图片
man_image.jpeg
垂直拼接不同宽度的图片:用于拼接不同宽度的图片。这里 shape[0] 代表高度,shape[1] 代表宽度。
# define a function for vertically
# concatenating images of different
# widths
def vconcat_resize(img_list, interpolation
= cv2.INTER_CUBIC):
# take minimum width
w_min = min(img.shape[
1]
for img in img_list)# resizing images
im_list_resize = [
cv2.resize(img,
(w_min, int(img.shape[
0] * w_min / img.shape[
1])),
interpolation = interpolation)
for img in img_list]
# return final image
return cv2.vconcat(im_list_resize)# function calling
img_v_resize = vconcat_resize([
img1, img2, img1])# show the output image
cv2.imwrite('vconcat_resize.jpg', img_v_resize)
输出:
文章图片
vconcat_resize.jpg
水平拼接不同高度的图片: 用于拼接不同高度的图片,如下Python合并多张图片实现代码:
# define a function for horizontally
# concatenating images of different
# heights
def hconcat_resize(img_list,
interpolation
= cv2.INTER_CUBIC):
# take minimum hights
h_min = min(img.shape[
0]
for img in img_list)# image resizing
im_list_resize = [
cv2.resize(img,
(int(img.shape[
1] * h_min / img.shape[
0]),
h_min), interpolation
= interpolation)
for img in img_list]# return final image
return cv2.hconcat(im_list_resize)# function calling
img_h_resize = hconcat_resize([
img1, img2, img1])# show the Output image
cv2.imshow('hconcat_resize.jpg', img_h_resize)
输出:
文章图片
如何使用OpenCV连接图像?垂直和水平连接相同大小的图像:可以使用 cv2.hconcat() 和 cv2.vconcat() 使用 2D 列表以平铺形式组合图像。
# define a function for vertically
# concatenating images of the
# same sizeand horizontally
def concat_vh(list_2d):# return final image
return cv2.vconcat([
cv2.hconcat(list_h)
for list_h in list_2d])
# image resizing
img1_s = cv2.resize(img1, dsize = (0,0),
fx = 0.5, fy = 0.5)# function calling
img_tile = concat_vh([
[
img1_s, img1_s, img1_s],
[
img1_s, img1_s, img1_s],
[
img1_s, img1_s, img1_s]])
# show the output image
cv2.imshow('concat_vh.jpg', img_tile)
输出:
文章图片
python图片拼接 - 在垂直和水平平铺中连接不同大小的图像:上面定义的调整大小和连接功能用于在垂直和水平平铺中组合不同大小的图像。
下面是Python合并多张图片的详细代码:
# define a function for concatenating
# images of different sizes in
# vertical and horizontal tiles
def concat_tile_resize(list_2d,
interpolation = cv2.INTER_CUBIC):
# function calling for every
# list of images
img_list_v = [
hconcat_resize(list_h,
interpolation = cv2.INTER_CUBIC)
for list_h in list_2d]# return final image
return vconcat_resize(img_list_v, interpolation=cv2.INTER_CUBIC)# function calling
im_tile_resize = concat_tile_resize([
[
img1],
[
img1, img2,
img1, img2, img1],
[
img1, img2, img1]])
# show the image
cv2.imshow('concat_tile_resize.jpg', im_tile_resize)
【python图片拼接(如何使用OpenCV连接图像())】输出:
文章图片
推荐阅读
- python横向拼接图片(如何使用Pillow连接图像())
- Win8.1专业版为啥休眠后才能连接无线网络?
- Win8专业版下出现wermgr.exe - Application Error出错
- Win8.1专业版通过路由器查看电脑流量的技巧
- 安装Win8.1专业版出现“无法连接”提示的处理技巧
- Win8.1开始屏幕邮件菜单字体变小怎样办?
- Win8.1升级Win10之后不会自动关闭屏幕如何是好?
- Win8.1专业版下提升运行速度30%的技巧
- Win8.1专业版下regid.1991-06.com.microsoft可以删除吗?