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代码使其加快作用域内的查找
Mar 30 Python
python3实现短网址和数字相互转换的方法
Apr 28 Python
python实现的多线程端口扫描功能示例
Jan 21 Python
20个常用Python运维库和模块
Feb 12 Python
tensorflow识别自己手写数字
Mar 14 Python
使用浏览器访问python写的服务器程序
Oct 10 Python
Python3.8对可迭代解包的改进及用法详解
Oct 15 Python
python3-flask-3将信息写入日志的实操方法
Nov 12 Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 Python
将labelme格式数据转化为标准的coco数据集格式方式
Feb 17 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
Feb 20 Python
Python如何使用循环结构和分支结构
Apr 13 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
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
让PHP显示Facebook的粉丝数量方法
2014/01/08 PHP
PHP输入输出流学习笔记
2015/05/12 PHP
thinkphp实现分页显示功能
2016/12/03 PHP
jQuery EasyUI API 中文文档 - Spinner微调器使用
2011/10/21 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
js保留两位小数使用toFixed实现
2013/07/29 Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
2014/11/17 Javascript
基于jquery实现发送文章到手机的代码
2014/12/26 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
JavaScript实现身份证验证代码
2016/02/17 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
2019/05/18 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
Javascript实现简易天数计算器
2020/05/18 Javascript
Vue中添加滚动事件设置的方法详解
2020/09/14 Javascript
[03:41]DOTA2上海特锦赛小组赛第三日recap精彩回顾
2016/02/28 DOTA
python基于xml parse实现解析cdatasection数据
2014/09/30 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
在Mac中PyCharm配置python Anaconda环境过程图解
2020/03/11 Python
在Sublime Editor中配置Python环境的详细教程
2020/05/03 Python
2019年Java面试必问之经典试题
2012/09/12 面试题
自我鉴定三原则
2014/01/13 职场文书
试用期员工考核制度
2014/01/22 职场文书
2014预备党员批评与自我批评思想汇报
2014/09/20 职场文书
教师党员个人剖析材料
2014/09/29 职场文书
党支部四风整改方案
2014/10/25 职场文书
工作经历证明书范文
2014/11/02 职场文书
营运督导岗位职责
2015/04/10 职场文书
乔布斯辞职信(中英文对照)
2015/05/12 职场文书
检讨书范文
2019/04/16 职场文书
简历自我评价:教师师德表现自我评价
2019/04/24 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技