python opencv图像拼接和显示

功能

用python的opencv读入多个图片,组成图片列表,而后将图片列表按照设定的比例拼接成一张图像。如图所示。

demo代码如下:

python 复制代码
# --coding:utf-8--
# 读取图片,汇总结果
import cv2 as cv
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
import math
def show(imgs_np):
    cv.namedWindow("image")
    cv.imshow('image', imgs_np)
    cv.waitKey(0)



def cat(imgs:list,row=2,colcumn=2,resize_shape=[1920,1080]):
    len_=imgs.__len__()
    img0=imgs[0]
    img_shape=img0.shape
    img_row_first=[]
    new_imgs=[]
    # 把列表里的图片统一尺寸
    for i in range(len_):
        new_img = cv.resize(imgs[i], [img_shape[1], img_shape[0]], interpolation=cv.INTER_LINEAR)
        new_imgs.append(new_img)
    del imgs

    # 找到每一行的图片作为合并初始图片
    for i in range(row):
        img_row_first.append(new_imgs[i*colcumn])

    # 每一行内的每一列合并
    # for i in range(len_):
    #     now_col=math.floor(i/row)
    #     img_cat=img_row_first[now_col]
    #         img_cat=np.concatenate((img_cat,new_imgs[i]),axis=1)
    #         img0=np.concatenate((img2,new_img),axis=1)
    img_cat=[]
    for r in range(row):
        img_cat_row=img_row_first[r]
        for c in range(colcumn):
            if c!=0:
                img_cat_row=np.concatenate((img_cat_row,new_imgs[c]),axis=1)
        img_cat.append(img_cat_row)

    # 将所有行得到的图片合并
    img_cat0=img_cat[0]
    for i in range(len(img_cat)):
        if i != 0:
            img_cat0 = np.concatenate((img_cat0, img_cat[i]), axis=0)

    # 将最终拼接后的图片resize成需要的尺寸
    img_cat0=cv.resize(img_cat0,resize_shape,interpolation=cv.INTER_LINEAR)

    return img_cat0






if __name__=="__main__":
    # imgs = Image.open("/media/lbw/E/lbw/data/scene/datasets/test/test/2.jpg",mode='r')
    imgs1=cv.imread("/media/lbw/E/lbw/data/scene/datasets/test/rural/13.png")
    imgs2=cv.imread("/media/lbw/E/lbw/data/scene/datasets/test/rural/16.png")
    imgs3=cv.imread("/media/lbw/E/lbw/data/scene/datasets/test/rural/18.jpg")
    imgs4=cv.imread("/media/lbw/E/lbw/data/scene/datasets/test/rural/23.png")
    imgs_list=[imgs1,imgs2,imgs3,imgs4]

    # show(imgs1)
    img0=cat(imgs_list)
    show(img0)
相关推荐
萧鼎6 小时前
深入理解 Python Scapy 库:网络安全与协议分析的瑞士军刀
开发语言·python·web安全
阿拉丁的梦8 小时前
教程1:用vscode->ptvsd-创建和调试一个UI(python)-转载官方翻译(有修正)
开发语言·python
名难取aaa9 小时前
celery solo acks_late得不到预期
python·celery
大翻哥哥11 小时前
Python地理空间数据分析:从地图绘制到智能城市应用
开发语言·python·数据分析
奇舞精选12 小时前
爬虫入门
爬虫·python
爬虫程序猿12 小时前
利用 Python 爬虫获取 1688 商品详情 API 返回值说明(代码示例)实战指南
开发语言·爬虫·python
明月看潮生13 小时前
编程与数学 02-017 Python 面向对象编程 23课题、测试面向对象的程序
开发语言·python·青少年编程·面向对象·编程与数学
小蒜学长14 小时前
基于django的梧桐山水智慧旅游平台设计与开发(代码+数据库+LW)
java·spring boot·后端·python·django·旅游
nightunderblackcat14 小时前
新手向:Python开发简易股票价格追踪器
开发语言·python
感哥15 小时前
DRF 认证
python·django