【深度学习实战(5)】使用仿射变换来实现自己的letter_box操作

一、letter_box

深度学习模型输入图片的尺寸为正方形,而数据集中的图片一般为长方形,粗暴的resize会使得图片失真,采用letterbox可以较好的解决这个问题。该方法可以保持图片的长宽比例,剩下的部分采用灰色填充。

二、代码

本例中,模型输入尺寸为604x640,而我们读取的图片的实际尺寸为128x384,通过letter_box操作,实现将原始图像以不失真的方式调整为640x640。

cpp 复制代码
import cv2
import numpy as np

def letter_box_cv(image, target_size):
    cv2.imshow('image', image)
    cv2.waitKey()
    dst_w, dst_h = target_size
    scale = min(dst_h / image.shape[0], dst_w / image.shape[1])  # [0]=height [1]=width
    ox = (-scale * image.shape[1] + dst_w + scale - 1) * 0.5
    oy = (-scale * image.shape[0] + dst_h + scale - 1) * 0.5
    M = np.array([[scale, 0, ox], [0, scale, oy]], dtype=np.float32)
    IM = cv2.invertAffineTransform(M)
    image_out = cv2.warpAffine(image, M, (dst_w, dst_h), flags=cv2.INTER_LINEAR, borderMode=cv2.BORDER_CONSTANT,
                               borderValue=(114, 114, 114))
    cv2.imshow('image_out', image_out)
    cv2.waitKey()
    return image_out, M, IM

orgin_image = cv2.imread('demo.jpg')
target_size = [640, 640]
letter_box_cv(orgin_image, target_size)

运行结果

相关推荐
学术科研小助手3 分钟前
【计算机方向海外优质会议推荐】第二届图像处理、机器学习与模式识别国际学术会议(IPMLP 2025)
图像处理·人工智能·机器学习
三道杠卷胡14 分钟前
【AI News | 20250520】每日AI进展
人工智能·pytorch·python·语言模型·github
源码方舟22 分钟前
【小明剑魔视频Viggle AI模仿的核心算法组成】
人工智能·算法·音视频
人工智能与智能制造27 分钟前
基于大模型与人工智能体的机械臂对话式交互系统RobotAgent
人工智能·语言模型·交互
珈和info43 分钟前
《经济日报》深度聚焦|珈和科技携手万果博览荟共筑智慧农业新示范高地 全链赋能蒲江茶果产业数字化转型升级
人工智能·科技·物联网
哔哩哔哩技术1 小时前
Index-AniSora技术升级开源:动漫视频生成强化学习
人工智能·音视频
白熊1881 小时前
【图像大模型】Stable Video Diffusion:基于时空扩散模型的视频生成技术深度解析
人工智能·chrome·计算机视觉·音视频
徐礼昭|商派软件市场负责人1 小时前
2025年AI搜索引擎发展洞察:技术革新与市场变革
人工智能·搜索引擎
东哥说-MES|从入门到精通1 小时前
第二章 何谓第二大脑?笔记记录
人工智能·机器学习·制造·设计规范·规格说明书
新知图书1 小时前
图像处理基础知识
图像处理·人工智能·计算机视觉