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实现合并两个数组的方法
May 16 Python
Pycharm学习教程(1) 定制外观
May 02 Python
对Tensorflow中的变量初始化函数详解
Jul 27 Python
python scipy求解非线性方程的方法(fsolve/root)
Nov 12 Python
解决Python正则表达式匹配反斜杠''\''问题
Jul 17 Python
pandas按行按列遍历Dataframe的几种方式
Oct 23 Python
基于python实现蓝牙通信代码实例
Nov 19 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
Jan 16 Python
Python递归及尾递归优化操作实例分析
Feb 01 Python
Python基于进程池实现多进程过程解析
Apr 30 Python
pycharm如何设置官方中文(如何汉化)
Dec 29 Python
用Python将GIF动图分解成多张静态图片
Jun 11 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简单系统查询模块代码打包下载
2008/06/07 PHP
php过滤表单提交的html等危险代码
2014/11/03 PHP
php的api数据接口书写实例(推荐)
2016/09/22 PHP
PHP-X系列教程之内置函数的使用示例
2017/10/16 PHP
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
2019/03/06 PHP
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
javascript实现跳转菜单的具体方法
2013/07/05 Javascript
javaScript基础语法介绍
2015/02/28 Javascript
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
2015/08/07 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
2015/09/23 Javascript
详解js数组的完全随机排列算法
2016/12/16 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
2017/09/30 Javascript
详解VUE 数组更新
2017/12/16 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
JS使用栈判断给定字符串是否是回文算法示例
2019/03/04 Javascript
python中精确输出JSON浮点数的方法
2014/04/18 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
python实现登录与注册系统
2020/11/30 Python
CSS3 calc()会计算属性详解
2018/02/27 HTML / CSS
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
eBay加拿大站:eBay.ca
2019/06/20 全球购物
CheapTickets香港机票预订网站:CheapTickets.hk
2019/06/26 全球购物
自荐信格式写作方法有哪些呢
2013/11/20 职场文书
写给女朋友的检讨书
2014/01/28 职场文书
小学美术教学反思
2014/02/01 职场文书
党员对十八届四中全会的期盼思想汇报范文
2014/10/17 职场文书
企业财务人员岗位职责
2015/04/14 职场文书
费用申请报告范文
2015/05/15 职场文书
小学六一主持词开场白
2015/05/28 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书