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 字符串中的字符倒转
Sep 06 Python
python避免死锁方法实例分析
Jun 04 Python
Python中将字典转换为列表的方法
Sep 21 Python
Python使用pymysql小技巧
Jun 04 Python
用不到50行的Python代码构建最小的区块链
Nov 16 Python
Python设计模式之MVC模式简单示例
Jan 10 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
Jul 12 Python
Python实现Dijkstra算法
Oct 17 Python
python paramiko利用sftp上传目录到远程的实例
Jan 03 Python
简单了解python字符串前面加r,u的含义
Dec 26 Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 Python
使用python将微信image下.dat文件解密为.png的方法
Nov 30 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
Codeigniter注册登录代码示例
2014/06/12 PHP
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
jquery文本框中的事件应用以输入邮箱为例
2014/05/06 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
2015/09/14 Javascript
基于jQuery实现定位导航位置效果
2017/11/15 jQuery
详解Chai.js断言库API中文文档
2018/01/31 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
2018/02/01 Javascript
Vue源码解析之数组变异的实现
2018/12/04 Javascript
详解js获取video任意时间的画面截图
2019/04/17 Javascript
改进 JavaScript 和 Rust 的互操作性并深入认识 wasm-bindgen 组件
2019/07/13 Javascript
微信小程序修改checkbox的样式代码实例
2020/01/21 Javascript
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
JavaScript如何操作css
2020/10/24 Javascript
JavaScript中跨域问题的深入理解
2021/03/04 Javascript
Python模仿POST提交HTTP数据及使用Cookie值的方法
2014/11/10 Python
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
Python读取键盘输入的2种方法
2015/06/16 Python
Python3导入CSV文件的实例(跟Python2有些许的不同)
2018/06/22 Python
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
浅谈python之新式类
2018/08/12 Python
Python3编码问题 Unicode utf-8 bytes互转方法
2018/10/26 Python
在Python中使用filter去除列表中值为假及空字符串的例子
2019/11/18 Python
pytorch如何冻结某层参数的实现
2020/01/10 Python
Java TransactionAPI (JTA) 主要包含几部分
2012/12/07 面试题
.NET初级开发工程师面试题
2014/04/18 面试题
应届生人事助理求职信
2013/11/09 职场文书
园林专业毕业生自荐信
2014/07/04 职场文书
安全责任书范文
2014/08/25 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
会计简历自我评价
2015/03/10 职场文书
护理专业自我评价
2015/03/11 职场文书
2015年城乡环境综合治理工作总结
2015/07/24 职场文书
幼儿教师继续教育培训心得体会
2016/01/19 职场文书
英镑符号 £
2022/02/17 杂记