【深度学习实战(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)

运行结果

相关推荐
飞哥数智坊4 小时前
AI编程实战:Cursor+Claude4助力15分钟完成大屏开发
人工智能·claude·cursor
Kier7 小时前
基于YOLO实现一个智能条码识别
人工智能·python·ai编程
我是王大你是谁7 小时前
SmolVLA:一种用于经济实惠和高效的机器人视觉-语言-动作模型
人工智能·llm
MarkGosling8 小时前
【语音合成】B 站开源 IndexTTS :声音克隆,吊打真人发音,断句精准度 98%
人工智能·python
数据智能老司机8 小时前
AI产品开发的艺术——搜索与检索增强生成
人工智能·产品经理·产品
机器之心8 小时前
逐个token太慢!大模型原生并行出token,CMU、英伟达新作Multiverse
人工智能·llm
顾林海9 小时前
DeepSeek 技术原理详解
深度学习·llm·deepseek
AI大模型技术社9 小时前
⚙️企业级Transformer优化:混合精度×梯度裁剪×权重初始化最佳实践
人工智能·llm
机器之心9 小时前
首个转型AI公司的新势力,在全球AI顶会展示下一代自动驾驶模型
人工智能
机器之心9 小时前
同一天开源新模型,一推理一编程,MiniMax和月之暗面开卷了
人工智能