python和c++实现 不改变长宽比缩放图片

算法简单来说就是一句话,让原图的高宽乘以同一个数,这样就不会改变比例,而这个数就是min( 高缩放的比例,宽缩放的比例),然后padding周围区域使得缩放到指定大小。

效果:

1. python实现 

import cv2
import numpy as np


# 缩放
def letterbox_image(img, input_dim):
    """
    resize image with unchanged aspect ratio using padding
    让原图的高宽乘以同一个数,这样就不会改变比例,而这个数就是min( 高缩放的比例,宽缩放的比例),然后padding周围区域使得缩放到指定大小。

    缩小: (2000, 4000) -> (200,200), min(200/4000, 200/2000) = 1/20, 2000 * 1/20 = 100, 4000 * 1/20 = 200
    新的尺度(100, 200),再padding

    放大: (50, 100) -> (200, 200), min(4, 2) = 2, 50 * 2 = 100, 100 * 2 = 200
    新的尺度(100, 200),再padding

    :param img: 原始图片
    :param input_dim: (w, h). 缩放后的尺度
    :return:
    """
    orig_w, orig_h = img.shape[1], img.shape[0]
    input_w, input_h = input_dim  # 缩放(orig_w, orig_h) -> (input_w, input_h)

    # 1,根据缩放前后的尺度,获取有效的新的尺度(new_w, new_h)
    min_ratio = min(input_w / orig_w, input_h / orig_h)
    new_w &
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值