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 25 Python
Python判断值是否在list或set中的性能对比分析
Apr 16 Python
Python编写电话薄实现增删改查功能
May 07 Python
python与C互相调用的方法详解
Jul 14 Python
Python数据结构与算法之完全树与最小堆实例
Dec 13 Python
django 将model转换为字典的方法示例
Oct 16 Python
Python 写入训练日志文件并控制台输出解析
Aug 13 Python
基于TensorFlow常量、序列以及随机值生成实例
Jan 04 Python
python可视化text()函数使用详解
Feb 11 Python
详解Django配置JWT认证方式
May 09 Python
Django通过json格式收集主机信息
May 29 Python
Pytorch数据读取之Dataset和DataLoader知识总结
May 23 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 压缩文件夹的类代码
2009/11/05 PHP
PHP中数组的三种排序方法分享
2012/05/07 PHP
smarty高级特性之对象的使用方法
2015/12/25 PHP
PHP邮件群发机实现代码
2016/02/16 PHP
php中关于长度计算容易混淆的问题分析
2016/05/27 PHP
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
JavaScript 对象模型 执行模型
2009/12/06 Javascript
点击弹出层外区域关闭弹出层jquery特效示例
2013/08/25 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
js常用自定义公共函数汇总
2014/01/15 Javascript
node.js正则表达式获取网页中所有链接的代码实例
2014/06/03 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
JQUERY表单暂存功能插件分享
2016/02/23 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
关于数据与后端进行交流匹配(点亮星星)
2016/08/03 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
BootStrap表单验证实例代码
2017/01/13 Javascript
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
详谈javascript精度问题与调整
2017/07/08 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
2019/12/10 Javascript
python将人民币转换大写的脚本代码
2013/02/10 Python
python打开网页和暂停实例
2014/09/30 Python
为Python的web框架编写前端模版的教程
2015/04/30 Python
Python实时获取cmd的输出
2015/12/13 Python
Python爬取豆瓣视频信息代码实例
2019/11/16 Python
SOA的常见陷阱或者误解是什么
2014/10/05 面试题
业务经理岗位职责
2013/11/11 职场文书
应届行政管理专业个人自我评价
2013/12/28 职场文书
投标人廉洁自律承诺书
2014/05/26 职场文书
办公室班子四风问题对照检查材料
2014/10/04 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
工程资料员岗位职责
2015/04/13 职场文书
八一建军节主持词
2015/07/01 职场文书
优秀毕业生主要事迹材料
2015/11/04 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书
pytorch中的 .view()函数的用法介绍
2022/03/17 Python