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 文件操作实现代码
Oct 07 Python
Python入门篇之数字
Oct 20 Python
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
Mar 30 Python
python机器学习理论与实战(二)决策树
Jan 19 Python
python爬虫基本知识
Mar 05 Python
python之django母板页面的使用
Jul 03 Python
python生成多个只含0,1元素的随机数组或列表的实例
Nov 12 Python
Django框架用户注销功能实现方法分析
May 28 Python
python协程gevent案例 爬取斗鱼图片过程解析
Aug 27 Python
Django项目基础配置和基本使用过程解析
Nov 25 Python
python实现代码审查自动回复消息
Feb 01 Python
Python中rapidjson参数校验实现
Jul 25 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 addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
利用PHP生成静态html页面的原理
2016/09/30 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
php使用socket调用http和smtp协议实例小结
2019/07/26 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
2019/09/18 PHP
Jquery+WebService 校验账号是否已被注册的代码
2010/07/12 Javascript
扩展jquery实现客户端表格的分页、排序功能代码
2011/03/16 Javascript
javascript中onclick(this)用法介绍
2013/04/19 Javascript
node.js中的fs.lstat方法使用说明
2014/12/16 Javascript
jquery实现textarea输入框限制字数的方法
2015/01/15 Javascript
JS三级可折叠菜单实现方法
2016/02/29 Javascript
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
vue: WebStorm设置快速编译运行的方法
2018/10/18 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
2020/08/04 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
[05:40]DOTA2荣耀之路6:Wings最后进攻
2018/05/30 DOTA
Python实现网络端口转发和重定向的方法
2016/09/19 Python
Python实现爬虫爬取NBA数据功能示例
2018/05/28 Python
详解Python如何生成词云的方法
2018/06/01 Python
python算法题 链表反转详解
2019/07/02 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
解决使用python print打印函数返回值多一个None的问题
2020/04/09 Python
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
Timberland法国官网:购买靴子、鞋子、衣服、夹克和配饰
2019/11/30 全球购物
请解释在new与override的区别
2012/10/29 面试题
前台文员的岗位职责
2013/11/14 职场文书
违反工作规定检讨书范文
2014/12/14 职场文书
道歉的话语大全
2015/05/12 职场文书
何玥事迹观后感
2015/06/16 职场文书
音乐研修感悟
2015/11/18 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python