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进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
Apr 25 Python
从零学Python之入门(二)基本数据类型
May 25 Python
Python过滤函数filter()使用自定义函数过滤序列实例
Aug 26 Python
python topN 取最大的N个数或最小的N个数方法
Jun 04 Python
python设置值及NaN值处理方法
Jul 03 Python
在Python中定义一个常量的方法
Nov 10 Python
python 提取key 为中文的json 串方法
Dec 31 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
Nov 11 Python
Python logging模块写入中文出现乱码
May 21 Python
使用Python爬取Json数据的示例代码
Dec 07 Python
Python机器学习之基础概述
May 19 Python
Anaconda配置各版本Pytorch的实现
Aug 07 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
如何提高MYSQL数据库的查询统计速度 select 索引应用
2007/04/11 PHP
一个PHP的String类代码
2010/04/20 PHP
删除无限分类并同时删除它下面的所有子分类的方法
2010/08/08 PHP
php URL跳转代码 减少外链
2011/06/25 PHP
使用php判断浏览器的类型和语言的函数代码
2013/02/28 PHP
php简单socket服务器客户端代码实例
2015/05/18 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
ajaxFileUpload.js插件支持多文件上传的方法
2014/09/02 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
jQuery使用$.ajax进行即时验证的方法
2015/12/08 Javascript
javascript中call apply 与 bind方法详解
2016/03/10 Javascript
jQuery验证表单格式的使用方法
2017/01/10 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
Vue 表单控件绑定的实现示例
2017/08/11 Javascript
jQuery实现table中两列CheckBox只能选中一个的示例
2017/09/22 jQuery
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
JavaScript中import用法总结
2019/01/20 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
解决elementui表格操作列自适应列宽
2020/12/28 Javascript
[01:57]DOTA2上海特锦赛小组赛解说单车采访花絮
2016/02/27 DOTA
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
详解Python中的array数组模块相关使用
2016/07/05 Python
Python程序打包工具py2exe和PyInstaller详解
2019/06/28 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
俄罗斯极限运动网上商店:Board Shop №1
2020/12/18 全球购物
清华大学自主招生自荐信
2014/01/29 职场文书
班级活动策划书
2014/02/06 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
专业见习报告范文
2014/11/03 职场文书
2014年党员个人工作总结
2014/12/02 职场文书
酒店员工管理制度
2015/08/05 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书