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元字符的用法实例解析
Jan 17 Python
Flask框架配置与调试操作示例
Jul 23 Python
python使用matplotlib模块绘制多条折线图、散点图
Apr 26 Python
python实现栅栏加解密 支持密钥加密
Mar 20 Python
使用Python操作FTP实现上传和下载的方法
Apr 01 Python
python web框架 django wsgi原理解析
Aug 20 Python
在Python中画图(基于Jupyter notebook的魔法函数)
Oct 28 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
Jan 20 Python
python使用paramiko实现ssh的功能详解
Mar 06 Python
解决python运行启动报错问题
Jun 01 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
Nov 24 Python
pandas apply使用多列计算生成新的列实现示例
Feb 24 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程序
2006/10/09 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
js的event详解。
2006/09/06 Javascript
prototype Element学习笔记(Element篇三)
2008/10/26 Javascript
用Javascript 获取页面元素的位置的代码
2009/09/25 Javascript
javascript下4个跨浏览器必备的函数
2010/03/07 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
js与C#进行时间戳转换
2014/11/14 Javascript
jQuery鼠标事件汇总
2015/08/30 Javascript
实例讲解JavaScript中instanceof运算符的用法
2016/06/08 Javascript
Html中 IFrame的用法及注意点
2016/12/22 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
2017/06/12 jQuery
详解如何实现一个简单的 vuex
2018/02/10 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
2018/06/26 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
解决vue+webpack项目接口跨域出现的问题
2020/08/10 Javascript
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
Python3解释器知识点总结
2019/02/19 Python
Python实现微信小程序支付功能
2019/07/25 Python
Django错误:TypeError at / 'bool' object is not callable解决
2019/08/16 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
Django实现前台上传并显示图片功能
2020/05/29 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
2021/01/27 HTML / CSS
整理HTML5中支持的URL编码与字符编码
2016/02/23 HTML / CSS
html5默认气泡修改的代码详解
2020/03/13 HTML / CSS
什么是重载?CTS、CLS和CLR分别做何解释
2012/05/06 面试题
自我评价怎么写好呢?
2013/12/05 职场文书
简历自我评价怎么写好呢?
2014/01/04 职场文书
音乐兴趣小组活动总结
2014/07/07 职场文书
班主任寄语2015
2015/02/26 职场文书
励志正能量20句:送给所有为梦想拼搏的人
2019/11/11 职场文书
如何在CSS中绘制曲线图形及展示动画
2021/05/24 HTML / CSS
Python集合的基础操作
2021/11/01 Python