图像补边不失真的resize

import cv2
import numpy as np
import torch
import torch.nn.functional as F
from PIL import Image
import copy
from nets.deeplabv3_plus import DeepLab
import colorsys
from matplotlib import pyplot as pltdef preprocess_input(image):image /= 255.0return image#---------------------------------------------------#
#   对输入图像进行resize
#---------------------------------------------------#def resize_image(image, size):iw, ih  = image.sizew, h    = sizescale   = min(w/iw, h/ih)nw      = int(iw*scale)nh      = int(ih*scale)image   = image.resize((nw,nh), Image.BICUBIC)new_image = Image.new('RGB', size, (128,128,128))new_image.paste(image, ((w-nw)//2, (h-nh)//2))return new_image, nw, nh#---------------------------------------------------------#
#   将图像转换成RGB图像,防止灰度图在预测时报错。
#   代码仅仅支持RGB图像的预测,所有其它类型的图像都会转化成RGB
#---------------------------------------------------------#
def cvtColor(image):if len(np.shape(image)) == 3 and np.shape(image)[2] == 3:return imageelse:image = image.convert('RGB')return image#---------------------------------------------------#
#   检测图片
#---------------------------------------------------#
def detect_image(image, count=False, name_classes=None):input_shape = [512, 512]# ---------------------------------------------------------##   在这里将图像转换成RGB图像,防止灰度图在预测时报错。#   代码仅仅支持RGB图像的预测,所有其它类型的图像都会转化成RGB# ---------------------------------------------------------#image = cvtColor(image)# ---------------------------------------------------##   对输入图像进行一个备份,后面用于绘图# ---------------------------------------------------#old_img = copy.deepcopy(image)  # 备份orininal_h = np.array(image).shape[0]  # 图片原始的horininal_w = np.array(image).shape[1]  # # 图片原始的w# ---------------------------------------------------------##   给图像增加灰条,实现不失真的resize#   也可以直接resize进行识别# ---------------------------------------------------------#image_data, nw, nh = resize_image(image, (input_shape[1], input_shape[0]))pr = np.array(image_data)pr = pr[int((input_shape[0] - nh) // 2): int((input_shape[0] - nh) // 2 + nh), \int((input_shape[1] - nw) // 2): int((input_shape[1] - nw) // 2 + nw)]# ---------------------------------------------------##   进行图片的resize# ---------------------------------------------------#pr = cv2.resize(pr, (orininal_w, orininal_h), interpolation=cv2.INTER_LINEAR)return old_img, image_data, pr, nw, nhif __name__ == '__main__':img = "F:/rock_project/deeplabv3-plus-pytorch-main/img/street.jpg"# img = "F:/rock_data/Mars_Rover/MarsRocks/MarsData/MarsRocks/JPEGImages/331_0331MR0013390000301024E01_DXXX.jpg"# img = "./VOCdevkit/VOC2007/JPEGImages/000005.jpg"img = Image.open(img)old_img,image_data,pr, nw, nh =  detect_image(img, count=False, name_classes=None)print("old_img,image_data:",old_img.size, image_data.size)plt.figure(figsize=(10, 10))plt.subplot(1, 3, 1)plt.imshow(old_img)plt.title("original ground")plt.subplot(1, 3, 2)plt.imshow(image_data)plt.title("RGB img")plt.subplot(1, 3, 3)plt.imshow(pr)plt.title("pr img")plt.show()

补边不失真的resize(2)相关推荐

  1. opencv+resize+padding+concate

    很多时候,我们不能简单地使用cv2.resize()来直接对图像的分辨率进行调节,为什么呢? 假设原始的分辨率是220*1000,也就是属于矮胖型,那么如果直接resize到1000*1200会怎样呢 ...

  2. vector操作小结

    前面了解了一下vector,现在我们来看看vector的相关操作. int main() {vector<int> v;//声明并指出向量,空的vector,但可以向里面增加元素vecto ...

  3. Pytorch搭建Faster R-CNN目标检测平台

    学习前言 什么是FasterRCNN目标检测算法 源码下载 Faster-RCNN实现思路 一.预测部分 1.主干网络介绍 2.获得Proposal建议框 3.Proposal建议框的解码 4.对Pr ...

  4. 数据分析第二章numpy数值运算

    import numpy as np 一.举例说明Numpy如何创建数组,访问数组,数组类型如何转换? 创建数组 array函数创建数组 array函数(),括号内的元素可以是,列表,元组,数组,迭代 ...

  5. 语义分割重制版1——Pytorch 搭建自己的Unet语义分割平台

    转载:https://blog.csdn.net/weixin_44791964/article/details/108866828?spm=1001.2014.3001.5501 对应b站视频:ht ...

  6. 【个人记录 | UNet | 整理ing】

    [代码] 霹雳吧啦WZ☆ Github地址. CSDN.bili主页.阿喆学习小记 [读后感] 对于网络中一些参数的设置及其设置原因解说的比较详细清晰:再自定义数据读取中,对如何读取每一个具体的文件也 ...

  7. 【DeeplabV3+ get_miou_png】DeeplabV3+获取数据集预测结果灰度图

    文章目录 1 为什么有这么一篇文章 2 获取并保存数据集分割预测结果 3 deeplab.get_miou_png()函数代码解析 4 感谢链接 1 为什么有这么一篇文章 其实之前有写过deeplab ...

  8. 目标检测(四):SSD之Pytorch源码解读

    读完 SSD 的论文内容能大致了解这一算法的核心思想和算法流程,但要将其应用到实际问题上还需要去读代码.论文给出的 SSD 源码是用 Caffe 框架实现的,但自己使用 Caffe 搭建 SSD 的环 ...

  9. python数据分析学习day05:随机函数和常用函数

    1. 随机函数 NumPy中也有自己的随机函数,包含在random模块中.它能产生特定分布的随机数,如正态分布等.接下来介绍一些常用的随机数. numpy.random.rand 返回 0 到 1 之 ...

最新文章

  1. 机器人暑假班招生推文_机器人兴趣班开学季
  2. Vue-CLI + Webpack 搭建 Vue 项目最全分析
  3. 浅谈Java反射机制 之 获取类的字节码文件 Class.forName(全路径名) 、getClass()、class...
  4. python缓冲区_如何在Python中使用Google的协议缓冲区
  5. 如何在Appscale下发布自己的应用(二)
  6. js 中meta 移除head_JS函数和winform函数之间的相互调用
  7. SpringDataRedis的简单案例使用
  8. ps画画模糊笔刷_如何用笔刷做出大神级效果?1000多款PS插画笔刷,简直就是你想要的神器...
  9. java+编辑距离自动机_编辑距离,重叠,组装算法和python程序.pptx
  10. android studio for android learning (十二) 查看并获取联系人信息
  11. 一款手机App的开发成本是多少钱?
  12. zigbee协议栈-端点
  13. 如何清除夏普AR-2408CN打印机屏出现小人小太阳
  14. 计算机启动方式如何选择USB启动,如何设置电脑从usb启动详细方法
  15. OceanBase可视化工具ODC2.3下载地址。
  16. cocos2d-x横版动作游戏《闯关吧》源码
  17. java面试题集汇总
  18. leetcode 179.最大数
  19. 主板2个M. 2接口,哪个m2插槽是与CPU直连?总结不得不说PCIE知识
  20. 用STM32F407ZET6的HAL库写一个串口接收,发送代码,支持ringbuff

热门文章

  1. CSS3 will-change提高页面动画等渲染性能
  2. Fasterrcnn代码个人精细解读(先验框生成部分)
  3. Office常用快捷键
  4. 成功解决 RecoveryYour PC/Device needs to be repairedThe Boot c onfiguration Data for your PC is missin
  5. 华为鸿蒙理性,华为的理性 鸿蒙的节奏
  6. 交游首款游戏曝光 《张狂交游》打破垂头交际
  7. 使用Glide模仿微信图片加载策略
  8. 加密币Terra创始人权道亨已从新加坡飞往杜拜转往第三国
  9. Kaggle实战之 房价预测案例
  10. 腾讯云不重启修改主机名