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函数装饰器用法实例详解
Jun 04 Python
Python使用内置json模块解析json格式数据的方法
Jul 20 Python
详解Python开发中如何使用Hook技巧
Nov 01 Python
对numpy中的数组条件筛选功能详解
Jul 02 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
如何在python中实现随机选择
Nov 02 Python
python实现密码强度校验
Mar 18 Python
python能做哪方面的工作
Jun 15 Python
Python3爬虫关于代理池的维护详解
Jul 30 Python
Python中Cookies导出某站用户数据的方法
May 17 Python
python基于机器学习预测股票交易信号
May 25 Python
利用python做数据拟合详情
Nov 17 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 url 加密解密函数代码
2011/08/26 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
Javascript学习笔记4 Eval函数
2010/01/11 Javascript
用jquery设置按钮的disabled属性的实现代码
2010/11/28 Javascript
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
2016/11/25 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
jquery版轮播图效果和extend扩展
2017/07/18 jQuery
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
Bootstrap图片轮播效果详解
2017/10/17 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
2018/02/05 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
2019/10/31 Javascript
基于vue--key值的特殊用处详解
2020/07/31 Javascript
使用python实现tcp自动重连
2017/07/02 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
python里运用私有属性和方法总结
2019/07/08 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
wxPython实现绘图小例子
2019/11/19 Python
python中必要的名词解释
2019/11/20 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
2020/04/08 Python
使用Python画了一棵圣诞树的实例代码
2020/11/27 Python
手机端用rem+scss做适配的详解
2017/11/15 HTML / CSS
巴西体育用品商店:Lojão dos Esportes
2018/07/21 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
2012/05/30 面试题
毕业生就业自荐信
2013/12/04 职场文书
体育教师自荐信范文
2013/12/16 职场文书
童装店创业计划书
2014/01/09 职场文书
知名企业招聘广告词大全
2014/03/18 职场文书
开展批评与自我批评发言材料
2014/05/15 职场文书
第二批党的群众路线教育实践活动总结报告
2014/10/30 职场文书
内勤岗位职责范本
2015/04/13 职场文书
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python
MySQL学习必备条件查询数据
2022/03/25 MySQL