原数据大小为:1920*1080

detect.py中的imgsz设置为640,按照正常图像宽高的缩放,原数据缩放后应为:640*360

而detect.py的控制台输出却为:640*384,如下所示:

这是为何呢?具体可以从头仔细阅读detect.py的代码,在LoadImages类中有一个letterbox函数,函数具体如下:

def letterbox(im, new_shape=(640, 640), color=(114, 114, 114), auto=True, scaleFill=False, scaleup=True, stride=32):# Resize and pad image while meeting stride-multiple constraintsshape = im.shape[:2]  # current shape [height, width]   --1080 1920if isinstance(new_shape, int):       new_shape = (new_shape, new_shape)  #                --(640, 640)# Scale ratio (new / old)# 计算缩放因子r = min(new_shape[0] / shape[0], new_shape[1] / shape[1]) # --0.33333333"""缩放(resize)到输入大小img_size的时候,如果没有设置上采样的话,则只进行下采样因为上采样图片会让图片模糊,对训练不友好影响性能。"""if not scaleup:  # only scale down, do not scale up (for better val mAP)r = min(r, 1.0)# Compute paddingratio = r, r  # width, height ratios                      -- 0.333333, 0.333333new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r))  # -- 640, 360# 计算paddingdw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1]  # wh padding --0, 280# 获取最小的矩形填充if auto:  # minimum rectangledw, dh = np.mod(dw, stride), np.mod(dh, stride)  # wh padding    --0, 12# 如果scaleFill=True,则不进行填充,直接resize成img_size,任由图片进行拉伸和压缩elif scaleFill:  # stretchdw, dh = 0.0, 0.0new_unpad = (new_shape[1], new_shape[0])ratio = new_shape[1] / shape[1], new_shape[0] / shape[0]  # width, height ratios# 计算上下左右填充大小dw /= 2  # divide padding into 2 sides  --0dh /= 2  #                              --12if shape[::-1] != new_unpad:  # resizeim = cv2.resize(im, new_unpad, interpolation=cv2.INTER_LINEAR)  # im.shape=640, 360top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1))  # --12, 12left, right = int(round(dw - 0.1)), int(round(dw + 0.1))  # --0, 0# 进行填充im = cv2.copyMakeBorder(im, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color)  # add border,将上下左右需要增加的边界填到图像上return im, ratio, (dw, dh)

代码中的备注给出了所有变量的变化过程。

其实具体就是通过计算“设置的宽高”与“原图宽高”的比例,计算出最终dw,dh的值,就能确定上下左右需要padding的像素个数,最后通过cv2.copyMakeBorder完成图像的resize和padding.

关于Yolov5在测试时,图像大小被调整的问题相关推荐

  1. Mac电脑用预览功能调整图像大小?Mac调整图片大小方法

    要说到修改一张图片的尺寸大小,很多人的第一反应通常是打开 Photoshop 或者 Pixelmator,其实使用苹果MAC电脑有更简单方便的方法来调整图片的大小尺寸,OS X 自带的快速预览功能就可 ...

  2. LabVIEW中调整图像大小

    LabVIEW中调整图像大小 需要调整LabVIEW前面板上图像的大小.可以如何操作实现? 基础版.完全版和专业版的LabVIEW开发环境本身并不包含用以图像处理的内置VI. 但是可以通过调用二维图像 ...

  3. tensorflow入门之---------图像大小调整

    在深度学习的过程中,往往对输入图像的大小需要进行一个调整,特别是对于拥有全连接层的神经网络,因为全连接层的节点数是固定的.因此,为了满足全连接层的一个输入的要求,我们可以利用tensorflow自带的 ...

  4. Php传图缩图,使用以下用于上传图像的PHP代码上传时缩小图像大小

    当然,它工作正常.我在PHP中使用这个类: function thumbnail( $img, $source, $dest, $maxw, $maxh ) { $jpg = $source.$img ...

  5. 目标检测论文解读复现之十五:基于YOLOv5的光学遥感图像舰船 目标检测算法

    前言 此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文,帮 ...

  6. 1.7 开发集和测试集的大小-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.6 开发集合测试集的大小 回到目录 1.8 为什么是人的表现 什么时候改变开发和测试集评估指标 (When to change dev/test sets and met ...

  7. php 修改图像大小,PHP图像大小调整

    据我所知,您无法在上传图像之前调整图像大小. (我可能错了!)但是,当您上传图像时,它会进入一个临时文件.您可以调整临时图像的大小,并将调整后的图像复制到其最终目标. 因为(似乎)你想保持宽度不变,所 ...

  8. 6.openCV调整图像大小新思路(cv2.resize和imutils.resize)

    6.opencv调整图像大小的新方法imutils.resize 一.openCV 调整图像大小 ( cv2.resize ) 二.项目结构和代码讲解 1.项目结构 2.代码讲解 3.比较 OpenC ...

  9. deepstream学习笔记(三):deepstream-imagedata-multistream解析与接入适配yolov5模型测试

    引言 上一节重点介绍了gstreamer架构图与各部分组成原理说明,并且针对deepstream-test1介绍了它的整体功能和画出了管道图,本篇博文将详细介绍deepstream-imagedata ...

最新文章

  1. ptpd和ptp4l 软件核心算法
  2. 【bzoj1511】[POI2006]OKR-Periods of Words KMP-next数组
  3. fragment error
  4. shell 练习(13) —— 监控 httpd 进程数是否异常
  5. 有重复元素的排列问题pascal题解
  6. WPF 4 单词拼写检查(SpellCheck)
  7. 从零实操基于WSL2 Docker部署Asp.Net Core项目
  8. 【渝粤教育】国家开放大学2018年春季 7218-22T医学伦理学(本) 参考试题
  9. 前端学习(3173):react-hello-react之todoList教程
  10. Golang 垃圾回收机制
  11. 百度地图API如何申请?(自认为比较详细,如解决了你的问题请收藏、点赞、关注!)
  12. Java Vector setElementAt()方法与示例
  13. lbp特征提取算法 知乎_图像-LBP特征描述算子-人脸检测
  14. (94)FPGA模块例化传递参数(input)
  15. IE6绿色中文版,支持在Win7、Win8下完美运行
  16. Python定时任务框架APScheduler
  17. react轮播图插件_React 基础面试题 - 和你随便聊聊 React
  18. 【书籍推荐】深入解析Windows操作系统(第4版)
  19. 静态存储分配和动态存储分配
  20. 超码、候选码和主码有什么区别?

热门文章

  1. 计算机系统 ahci模式,老电脑安装系统忘记开启AHCI模式,教你不重装系统开启AHCI解决方法(3)...
  2. error C2448 函数样式初始值设定项类似函数定义
  3. 自动检测图像中的圆形或圆形对象
  4. 杭电计算机复试面试题库,杭电电子分院历年复试题(整理版).doc
  5. 多线程(一) 线程概念及创建线程的方法
  6. 数控铣削图案及编程_数控铣床编程30例带图
  7. SpringBoot高级特性
  8. 尚硅谷设计模式学习(1)---[设计模式七大原则]
  9. ViewModel是如何在配置更改后继续留存数据的
  10. 化妆品电商平台数据分析报告