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基于socket实现网络广播的方法
Apr 29 Python
Python使用urllib2模块抓取HTML页面资源的实例分享
May 03 Python
python逆向入门教程
Jan 15 Python
Windows下安装Django框架的方法简明教程
Mar 28 Python
opencv改变imshow窗口大小,窗口位置的方法
Apr 02 Python
Python Django 简单分页的实现代码解析
Aug 21 Python
python中栈的原理及实现方法示例
Nov 27 Python
Python开发之pip安装及使用方法详解
Feb 21 Python
详解pycharm2020.1.1专业版安装指南(推荐)
Aug 07 Python
Python fileinput模块如何逐行读取多个文件
Oct 05 Python
python实现简单文件读写函数
Feb 25 Python
python中使用asyncio实现异步IO实例分析
Feb 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
几种显示数据的方法的比较
2006/10/09 PHP
一个php导出oracle库的php代码
2009/04/20 PHP
php中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
Zend Studio 实用快捷键一览表(精心整理)
2013/08/10 PHP
详解js异步文件加载器
2016/01/24 PHP
PHP mkdir创建文件夹实现方法解析
2020/11/13 PHP
用js小类库获取浏览器的高度和宽度信息
2012/01/15 Javascript
查询json的数据结构的8种方式简介
2014/03/10 Javascript
jquery实现倒计时代码分享
2014/06/13 Javascript
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
JavaScript的原型继承详解
2015/02/15 Javascript
js中el表达式的使用和非空判断方法
2018/03/28 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
js+canvas实现简单扫雷小游戏
2021/01/22 Javascript
原生js实现弹窗消息动画
2020/11/20 Javascript
Python Socket传输文件示例
2017/01/16 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
2018/03/29 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
Python程序包的构建和发布过程示例详解
2019/06/09 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
Python print不能立即打印的解决方式
2020/02/19 Python
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
英国卫浴商店:Ergonomic Design
2019/09/22 全球购物
蔻驰英国官网:COACH英国
2020/07/19 全球购物
值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型
2015/10/24 面试题
绝对经典成功的大学生推荐信
2013/11/08 职场文书
根叔历年演讲稿
2014/05/20 职场文书
司机岗位职责说明书
2014/07/29 职场文书
授权委托书
2015/01/28 职场文书
会计工作能力自我评价
2015/03/05 职场文书
心灵捕手观后感
2015/06/02 职场文书
2016创先争优活动党员公开承诺书
2016/03/24 职场文书
pytorch常用数据类型所占字节数对照表一览
2021/05/17 Python
MySQL优化之慢日志查询
2022/06/10 MySQL