def image_preporcess(image, target_size, gt_boxes=None):
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB).astype(np.float32)
ih, iw = target_size
h, w, _ = image.shape
scale = min(iw/w, ih/h)
nw, nh = int(scale * w), int(scale * h) # 寻找最小的,即使准备将最大边转换为目标尺寸如416,但最小边肯定不能变到目标尺寸(416)
image_resized = cv2.resize(image, (nw, nh)) # 将原始图像转换为需要的目标尺寸内,但不能完全填充完
image_paded = np.full(shape=[ih, iw, 3], fill_value=128.0) # 用128填充目标尺寸的矩阵
dw, dh = (iw - nw) // 2, (ih-nh) // 2 # 找出目标尺寸与原始图像转换后尺寸的差距的二分之一
image_paded[dh:nh+dh, dw:nw+dw, :] = image_resized # 将改变后的原始图像尺寸的数据填充到中间位置,因为其它位置已经被128填充
image_paded = image_paded / 255.
if gt_boxes is None:
return image_paded
else:
gt_boxes[:, [0, 2]] = gt_boxes[:, [0, 2]] * scale + dw # 将原始坐标按照图像变化(原始图像变到目标图像)对应其bboxes的坐标
gt_boxes[:, [1, 3]] = gt_boxes[:, [1, 3]] * scale + dh # 将原始坐标按照图像变化(原始图像变到目标图像)对应其bboxes的坐标
return image_paded, gt_boxes # gt_boxes将会对应变换后的图像位置,如[[263 211 324 339 8]
# [165 264 253 372 8]
# [241 194 295 299 8]]

任意图像尺寸变成目标尺寸(包含相应的boxes的变换)的更多相关文章

  1. iPhone/iPad/Android UI尺寸规范 UI尺寸规范,UI图标尺寸,UI界面尺寸,iPhone6尺寸,iPhone6 Plus尺寸,安卓尺寸,iOS尺寸

    iPhone/iPad/Android UI尺寸规范 UI尺寸规范,UI图标尺寸,UI界面尺寸,iPhone6尺寸,iPhone6 Plus尺寸,安卓尺寸,iOS尺寸 iPhone界面尺寸 设备 分辨 ...

  2. Unity插件之NGUI学习(8)—— Table和NGUI尺寸转换为世界坐标系尺寸

    依据 Unity插件之NGUI学习(2),创建一个UI Root,在UI Root下创建一个Texture作为背景图,并设置图片,在Wiget下调整大小:然后在UI Root下再创建一个Panel. ...

  3. NX二次开发-设置尺寸的附加尺寸UF_DRF_set_appended_text

    #include <uf.h> #include <uf_drf.h> #include <uf_obj.h> #include <uf_part.h> ...

  4. 经典论文系列 | 目标检测--CornerNet & 又名 anchor boxes的缺陷

    ​ 前言: 目标检测的预测框经过了滑动窗口.selective search.RPN.anchor based等一系列生成方法的发展,到18年开始,开始流行anchor free系列,CornerNe ...

  5. iOS 设备尺寸以及图标尺寸

    iPhone 4和iPod Touch 4有一个新的特性:在屏幕尺寸不变的前提下,分辨率提升一倍(320 x 480 => 640 x 960).苹果将这个特性命名为Retina. 用苹果的话讲 ...

  6. 验证ogg同步数据库表无主键表且目标表包含隐藏字段

    问题描述: 已知:OGG在同步无主键的表时,OGG会自动设置表的全字段为主键,若目标表字段多于源表,同步过程中replicat进程可以读取insert操作但无法进行update/delete操作,从而 ...

  7. 【译】用boosting构建简单的目标分类器

    用boosting构建简单的目标分类器 原文 boosting提供了一个简单的框架,用来构建鲁棒性的目标检测算法.这里提供了必要的函数来实现它:100% MATLAB实现,作为教学工具希望让它简单易得 ...

  8. 机器学习-分类器-级联分类器训练(Train CascadeClassifier )

    一.简介: adaboost分类器由级联分类器构成,"级联"是指最终的分类器是由几个简单分类器级联组成.在图像检测中,被检窗口依次通过每一级分类器,这样在前面几层的检测中大部分的候 ...

  9. Unity 3D开发-C#脚本语言的一些基础用法

    Unity 中C#语言的一些基础用法 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Lerp -- 线 ...

随机推荐

  1. 第10节-BLE协议链路层(LL)

    本篇博客的学些要结合书籍<低功耗蓝牙开发权威指南,Robin Heydon著>第7章,实际上这书只是对蓝牙原版协议的简化.摘要. 回顾以前学过的<BLE协议各层的形象化理解>和 ...

  2. MongoDB基础知识与常用命令

    SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table collection 数据库表/集合 row document 数据记录行/文档 col ...

  3. XIX Open Cup named after E.V. Pankratiev. Grand Prix of Eurasia, Division 1.

    A 签到. C 源点向每个软件连边.把每个软件拆成对应版本数个点,每个软件向版本连边.把每个conflict也看成一个点.每个版本向它对应的conflict连边,conflict向汇点连边.没有在co ...

  4. CanvasRenderingContext2D.fillText(text, x, y [, maxWidth]);

    CanvasRenderingContext2D.fillText(text, x, y [, maxWidth]); [, maxWidth]的意思是,方括号代表可有可无,有fillText(tex ...

  5. java 多态(向上转型)

    多态的定义与使用格式 多态的定义格式:就是父类的引用变量指向子类对象 父类类型  变量名 = new 子类类型(); 变量名.方法名(); 普通类多态定义的格式 父类 变量名 = new 子类(); ...

  6. Splay的基本操作(插入/删除,查询)

    Splay的基本操作(插入/删除,查询) 概述 这是一棵二叉查找树 让频繁访问的节点尽量靠近根 将查询,插入等操作的点"旋转"至根 树的高度均摊为$log_n$ 变量 int ro ...

  7. SDOI 2019 R2 摸鱼记

    其实并没有什么动力来写这篇游记,毕竟呢,明明已经做好了被吊打的心理准备,可是当 Day 2 挂到没分时,当看到自己在高一里还排名二十时,还是有些,有些难言的滋味.学长们该走的真的都走了,就要只剩下 z ...

  8. 备忘Sourcetree配置

    一. 设置用户名 对应路径:C:\Users\用户名\.gitconfig 二.验证账号 三.添加ssh key 创建ssh密码 保存key,路径:C:\Users\用户名\.ssh 配置Pagean ...

  9. 收藏:C语言中字符串常量到底存在哪了?

    来源:https://www.cnblogs.com/jaysir/p/5041799.html 常量存储总结局部变量.静态局部变量.全局变量.全局静态变量.字符串常量以及动态申请的内存区 1.局部变 ...

  10. ef core 全局过滤

    有些固定的条件,基本每个查询的时候需要带的条件,我们可以使用全局过滤来帮我们,这样后面的查询就不用每次都带条件了. 微软自带的:https://docs.microsoft.com/zh-cn/ef/ ...