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将人民币转换大写的脚本代码
Feb 10 Python
为Python的web框架编写MVC配置来使其运行的教程
Apr 30 Python
Python中实现三目运算的方法
Jun 21 Python
深入浅析python with语句简介
Apr 11 Python
在Python 字典中一键对应多个值的实例
Feb 03 Python
python网络编程 使用UDP、TCP协议收发信息详解
Aug 29 Python
Python进度条的制作代码实例
Aug 31 Python
python numpy之np.random的随机数函数使用介绍
Oct 06 Python
基于python+selenium的二次封装的实现
Jan 06 Python
在TensorFlow中实现矩阵维度扩展
May 22 Python
django和flask哪个值得研究学习
Jul 31 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
Nov 26 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和ACCESS写聊天室(四)
2006/10/09 PHP
php 目录遍历、删除 函数的使用介绍
2013/04/28 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
2014/06/09 PHP
php中实现可以返回多个值的函数实例
2015/03/21 PHP
Zend Framework教程之Application用法实例详解
2016/03/14 PHP
JS时间选择器 兼容IE6,7,8,9
2012/06/26 Javascript
javascript继承之为什么要继承
2012/11/10 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
js 动态修改css文件的方法
2014/08/05 Javascript
jquery Validation表单验证使用详解
2020/09/12 Javascript
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
2015/12/30 Javascript
jQuery移动端图片上传组件
2016/06/12 Javascript
jquery实现input框获取焦点的方法
2017/02/06 Javascript
jQuery给表格添加分页效果
2017/03/02 Javascript
Node.js搭建小程序后台服务
2018/01/03 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
基于JS实现视频上传显示进度条
2020/05/12 Javascript
JS加载解析Markdown文档过程详解
2020/05/19 Javascript
Python with用法实例
2015/04/14 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
2019/11/22 Python
Python面向对象中类(class)的简单理解与用法分析
2020/02/21 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
python,Java,JavaScript实现indexOf
2020/09/09 Python
史蒂夫·马登加拿大官网:Steve Madden加拿大
2017/11/18 全球购物
NIHAOMARKET官方海外旗舰店:意大利你好华人超市
2018/01/27 全球购物
荷兰演唱会和体育比赛订票网站:viagogo荷兰
2018/04/08 全球购物
一套C#面试题
2013/10/09 面试题
数控专业个人求职信范例
2013/11/29 职场文书
大学生会计职业生涯规划范文
2014/02/28 职场文书
元旦促销方案
2014/03/15 职场文书
优秀团干部个人事迹
2014/05/29 职场文书
高中学生会竞选演讲稿
2014/08/25 职场文书
实训报告范文大全
2014/11/04 职场文书
公司员工宿舍管理制度
2015/08/03 职场文书
Html5生成验证码的示例代码
2021/05/10 Javascript