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装饰器使用方法实例
Nov 21 Python
python列表去重的二种方法
Feb 14 Python
Python科学计算环境推荐——Anaconda
Jun 30 Python
为Python的Tornado框架配置使用Jinja2模板引擎的方法
Jun 30 Python
Python使用pickle模块存储数据报错解决示例代码
Jan 26 Python
python lxml中etree的简单应用
May 10 Python
如何给Python代码进行加密
Jan 10 Python
python读写文件write和flush的实现方式
Feb 21 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
May 16 Python
在keras中对单一输入图像进行预测并返回预测结果操作
Jul 09 Python
python 获取字典特定值对应的键的实现
Sep 29 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
Oct 15 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 获取文件路径(灵活应用__FILE__)
2013/02/15 PHP
开启PHP Static 关键字之旅模式
2015/11/13 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
JavaScript 学习笔记(十一)
2010/01/19 Javascript
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
jQuery基本过滤选择器用法示例
2016/09/09 Javascript
详解JavaScript跨域总结与解决办法
2016/10/31 Javascript
JavaScript实现分页效果
2017/03/28 Javascript
使用JavaScript实现alert的实例代码
2017/07/06 Javascript
使用Sonarqube扫描Javascript代码的示例
2018/12/26 Javascript
JavaScript常见事件处理程序实例总结
2019/01/05 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
2019/11/01 Javascript
JavaScript闭包原理与用法学习笔记
2020/05/29 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
[07:12]2014DOTA2西雅图国际邀请赛 黑马Liquid专题采访
2014/07/12 DOTA
进一步探究Python的装饰器的运用
2015/05/05 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
2015/11/09 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
基于DataFrame改变列类型的方法
2018/07/25 Python
Python中单线程、多线程和多进程的效率对比实验实例
2019/05/14 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
Python dict的常用方法示例代码
2020/06/23 Python
html5 touch事件实现页面上下滑动效果【附代码】
2016/03/10 HTML / CSS
标记环网Toke Ring IEEE802.5
2014/05/26 面试题
个人求职信范文分享
2014/01/06 职场文书
电子商务专业应届生求职信
2014/05/28 职场文书
大学生求职信例文
2014/06/29 职场文书
水利水电建筑施工应届生求职信
2014/07/04 职场文书
销售竞赛活动方案
2014/08/23 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
用position:sticky完美解决小程序吸顶问题的实现方法
2021/04/24 HTML / CSS
CSS3实现指纹特效代码
2022/03/17 HTML / CSS