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遍历目录的4种方法实例介绍
Apr 13 Python
Python实现多线程抓取妹子图
Aug 08 Python
使用PyCharm配合部署Python的Django框架的配置纪实
Nov 19 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
Dec 24 Python
python如何查看系统网络流量的信息
Sep 12 Python
Python使用time模块实现指定时间触发器示例
May 18 Python
关于Python中空格字符串处理的技巧总结
Aug 10 Python
Python PyQt5标准对话框用法示例
Aug 23 Python
python编程羊车门问题代码示例
Oct 25 Python
对python生成业务报表的实例详解
Feb 03 Python
Pytorch DataLoader 变长数据处理方式
Jan 08 Python
Django Session和Cookie分别实现记住用户登录状态操作
Jul 02 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页面缓存ob系列函数介绍
2012/10/18 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
php表单加入Token防止重复提交的方法分析
2016/10/10 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
通过PHP实现获取访问用户IP
2020/05/09 PHP
Ext.MessageBox工具类简介
2009/12/10 Javascript
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
js中setTimeout()与clearTimeout()用法实例浅析
2015/05/12 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
nodejs 子进程正确的打开方式
2017/07/03 NodeJs
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
element-ui 限制日期选择的方法(datepicker)
2018/05/16 Javascript
js实现web调用摄像头 js截取视频画面
2019/04/21 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
教你使用python画一朵花送女朋友
2018/03/29 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
django 类视图的使用方法详解
2019/07/24 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
TFRecord格式存储数据与队列读取实例
2020/01/21 Python
python 获取当前目录下的文件目录和文件名实例代码详解
2020/03/10 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
pytorch中的weight-initilzation用法
2020/06/24 Python
丝芙兰新加坡官网:Sephora新加坡
2018/12/04 全球购物
Gloeilampgoedkoop荷兰:在线购买灯泡
2019/02/16 全球购物
电子商务专业实习生自我鉴定
2013/09/24 职场文书
解除财产保全担保书
2014/05/20 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
离婚协议书范本
2015/01/26 职场文书
云冈石窟导游词
2015/02/04 职场文书
共青团优秀团员申请书(范文)
2019/08/15 职场文书
创业计划书之花店
2019/09/20 职场文书
解析MySQL索引的作用
2022/03/03 MySQL
MySQL RC事务隔离的实现
2022/03/31 MySQL