Python OpenCV将n×n的小图拼接成m×m的大图
- 前言
- 前提条件
- 相关介绍
- 实验环境
- n × \times ×n的小图拼接成m × \times ×m的大图
- 代码实现
前言
- 由于本人水平有限,难免出现错漏,敬请批评改正。
- 更多精彩内容,可点击进入Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看
- 基于DETR的人脸伪装检测
- YOLOv7训练自己的数据集(口罩检测)
- YOLOv8训练自己的数据集(足球检测)
- YOLOv5:TensorRT加速YOLOv5模型推理
- YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
- 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
- YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
- YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
- Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
- YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
- 使用Kaggle GPU资源免费体验Stable Diffusion开源项目
前提条件
- 熟悉Python
相关介绍
- Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
实验环境
- Python 3.x (面向对象的高级语言)
n × \times ×n的小图拼接成m × \times ×m的大图
代码实现
import os
import cv2
import numpy as np
def divide_chunks(l, n): # 将列表l分成n个子列表(块)
# looping till length l
for i in range(0, len(l), n):
yield l[i:i + n]
if __name__=="__main__":
# 定义小图和大图的尺寸
small_image_size = 512
large_image_size = 1536
# 3 * 3 * 512 * 512 = 1536 * 1536
row_num, col_num = large_image_size // small_image_size, large_image_size // small_image_size
# 定义小图文件名列表
img_dir = 'imgs/'
filename_list = os.listdir(img_dir)
# print(filename_list)
img_name_list = [img_name for img_name in filename_list if img_name.endswith('.jpg')]
# print(img_name_list)
img_lists = []
# 分块
n = row_num * col_num
img_lists = list(divide_chunks(img_name_list, n))
print(img_lists)
for img_list_num, img_list in enumerate(img_lists):
# 创建一个空白的大图
result = np.zeros((large_image_size, large_image_size, 3), dtype=np.uint8)
# 使用 for 循环将小图拼接到大图上
for i, img_name in enumerate(img_list):
# 读取小图
img_path = img_dir + img_name
small_image = cv2.imread(img_path)
small_image = cv2.resize(small_image,(small_image_size,small_image_size))
# 计算小图在大图中的位置
row = (i // row_num) * small_image_size
col = (i % col_num) * small_image_size
# print((row,col)) # h,w
# 将小图拼接到大图上
result[row:row+small_image_size, col:col+small_image_size] = small_image
# 保存大图
cv2.imwrite('result_{}.jpg'.format(img_list_num), result)
- 由于本人水平有限,难免出现错漏,敬请批评改正。
- 更多精彩内容,可点击进入Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看
- 基于DETR的人脸伪装检测
- YOLOv7训练自己的数据集(口罩检测)
- YOLOv8训练自己的数据集(足球检测)
- YOLOv5:TensorRT加速YOLOv5模型推理
- YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
- 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
- YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
- YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
- Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
- YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
- 使用Kaggle GPU资源免费体验Stable Diffusion开源项目