python opencv 批量改变图片的尺寸大小的方法


Posted in Python onJune 28, 2019

我目标文件夹下有一大批图片,我要把它转变为指定尺寸大小的图片,用pthon和opencv实现的。

python opencv 批量改变图片的尺寸大小的方法

以上为原图片。

import cv2
import os
# 按指定图像大小调整尺寸
def resize_image(image, height = 640, width = 480):
  top, bottom, left, right = (0,0,0,0)
  
  # 获取图片尺寸
  h, w, _ = image.shape
  
  # 对于长宽不等的图片,找到最长的一边
  longest_edge = max(h,w)
  
  # 计算短边需要增加多少像素宽度才能与长边等长(相当于padding,长边的padding为0,短边才会有padding)
  if h < longest_edge:
    dh = longest_edge - h
    top = dh // 2
    bottom = dh - top
  elif w < longest_edge:
    dw = longest_edge - w
    left = dw // 2
    right = dw - left
  else:
    pass # pass是空语句,是为了保持程序结构的完整性。pass不做任何事情,一般用做占位语句。
  
  # RGB颜色
  BLACK = [0,0,0]
  # 给图片增加padding,使图片长、宽相等
  # top, bottom, left, right分别是各个边界的宽度,cv2.BORDER_CONSTANT是一种border type,表示用相同的颜色填充
  constant = cv2.copyMakeBorder(image, top, bottom, left, right, cv2.BORDER_CONSTANT, value = BLACK)
  # 调整图像大小并返回图像,目的是减少计算量和内存占用,提升训练速度
  return cv2.resize(constant, (height, width))

def read__image(path_name):
  num = 0 
  for dir_image in os.listdir(path_name): # os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表
    full_path = os.path.abspath(os.path.join(path_name,dir_image)) 
    
    if os.path.isdir(full_path): #如果是文件夹,继续递归调用
      read_training_data(full_path)
    else: #如果是文件了
      if dir_image.endswith('.JPG'):
        image = cv2.imread(full_path)
        image = resize_image(image)
        #将尺寸调整好的图片保存起来
        image_name = '%s%d.jpg' % ('resize_image',num) # 注意这里图片名一定要加上扩展名,否则后面imwrite的时候会报错 
        cv2.imwrite(image_name, image)
        num = num + 1

if __name__=='__main__':
  read__image('C:/Users/baideguo/dataset/JPEGImages/')

我把原图片大小为3024 x 4032转变为了640*480大小的图片

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 和 JS 有哪些相同之处
Nov 23 Python
Pandas 对Dataframe结构排序的实现方法
Apr 10 Python
python 匹配url中是否存在IP地址的方法
Jun 04 Python
Python实现将多个空格换为一个空格.md的方法
Dec 20 Python
Django xadmin开启搜索功能的实现
Nov 15 Python
python实现控制台输出彩色字体
Apr 05 Python
Python获取浏览器窗口句柄过程解析
Jul 25 Python
python excel多行合并的方法
Dec 09 Python
python+selenium实现12306模拟登录的步骤
Jan 21 Python
Python使用tkinter制作在线翻译软件
Feb 22 Python
pytorch 6 batch_train 批训练操作
May 28 Python
详解运行Python的神器Jupyter Notebook
Jun 03 Python
python如何实现代码检查
Jun 28 #Python
python射线法判断一个点在图形区域内外
Jun 28 #Python
Python OpenCV之图片缩放的实现(cv2.resize)
Jun 28 #Python
如何使用Python 打印各种三角形
Jun 28 #Python
python射线法判断检测点是否位于区域外接矩形内
Jun 28 #Python
python 列表转为字典的两个小方法(小结)
Jun 28 #Python
numpy和pandas中数组的合并、拉直和重塑实例
Jun 28 #Python
You might like
十天学会php(2)
2006/10/09 PHP
C# Assembly类访问程序集信息
2009/06/13 PHP
php利用嵌套数组拼接与解析json的方法
2017/02/07 PHP
javascript实现的右下角弹窗实例
2015/04/24 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
2015/09/27 Javascript
详解 javascript中offsetleft属性的用法
2015/11/11 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
2015/12/07 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
很不错的两款Bootstrap Icon图标选择组件
2016/01/28 Javascript
动态的9*9乘法表效果的实现代码
2016/05/16 Javascript
jquery dataview数据视图插件使用方法
2016/12/23 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
node实现登录图片验证码的示例代码
2018/04/20 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
极简的Python入门指引
2015/04/01 Python
Python中列表、字典、元组数据结构的简单学习笔记
2016/03/20 Python
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
django 开发忘记密码通过邮箱找回功能示例
2018/04/17 Python
python下的opencv画矩形和文字注释的实现方法
2019/07/09 Python
Python数据可视化:箱线图多种库画法
2019/11/06 Python
python3.5的包存放的具体路径
2020/08/16 Python
python中封包建立过程实例
2021/02/18 Python
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
大学生职业生涯规划范文
2013/12/31 职场文书
小学运动会入场式解说词
2014/02/18 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
售后客服个人自我评价
2014/09/14 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
职工年度考核评语
2014/12/31 职场文书
迎新生欢迎词2015
2015/07/16 职场文书
长辈生日祝福语大全(72句)
2019/08/09 职场文书
nginx反向代理时如何保持长连接
2021/03/31 Servers