我目标文件夹下有一大批图片,我要把它转变为指定尺寸大小的图片,用pthon和opencv实现的。

以上为原图片。

  1. import cv2
  2. import os
  3. # 按指定图像大小调整尺寸
  4. def resize_image(image, height = 640, width = 480):
  5. top, bottom, left, right = (0,0,0,0)
  6.  
  7. # 获取图片尺寸
  8. h, w, _ = image.shape
  9.  
  10. # 对于长宽不等的图片,找到最长的一边
  11. longest_edge = max(h,w)
  12.  
  13. # 计算短边需要增加多少像素宽度才能与长边等长(相当于padding,长边的padding为0,短边才会有padding)
  14. if h < longest_edge:
  15. dh = longest_edge - h
  16. top = dh // 2
  17. bottom = dh - top
  18. elif w < longest_edge:
  19. dw = longest_edge - w
  20. left = dw // 2
  21. right = dw - left
  22. else:
  23. pass # pass是空语句,是为了保持程序结构的完整性。pass不做任何事情,一般用做占位语句。
  24.  
  25. # RGB颜色
  26. BLACK = [0,0,0]
  27. # 给图片增加padding,使图片长、宽相等
  28. # top, bottom, left, right分别是各个边界的宽度,cv2.BORDER_CONSTANT是一种border type,表示用相同的颜色填充
  29. constant = cv2.copyMakeBorder(image, top, bottom, left, right, cv2.BORDER_CONSTANT, value = BLACK)
  30. # 调整图像大小并返回图像,目的是减少计算量和内存占用,提升训练速度
  31. return cv2.resize(constant, (height, width))
  32.  
  33. def read__image(path_name):
  34. num = 0
  35. for dir_image in os.listdir(path_name): # os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表
  36. full_path = os.path.abspath(os.path.join(path_name,dir_image))
  37.  
  38. if os.path.isdir(full_path): #如果是文件夹,继续递归调用
  39. read_training_data(full_path)
  40. else: #如果是文件了
  41. if dir_image.endswith('.JPG'):
  42. image = cv2.imread(full_path)
  43. image = resize_image(image)
  44. #将尺寸调整好的图片保存起来
  45. image_name = '%s%d.jpg' % ('resize_image',num) # 注意这里图片名一定要加上扩展名,否则后面imwrite的时候会报错
  46. cv2.imwrite(image_name, image)
  47. num = num + 1
  48.  
  49. if __name__=='__main__':
  50. read__image('C:/Users/baideguo/dataset/JPEGImages/')

我把原图片大小为3024 x 4032转变为了640*480大小的图片

批量改变图片的尺寸大小 python opencv的更多相关文章

  1. Python之批量改变图片大小

    image_pylib模块:https://github.com/huangshiyu13/image_pylib data_engine模块:https://github.com/huangshiy ...

  2. 通过transform属性改变图片的位置大小等信息

    对UIImageView的位置大小方向的改变可以通过改变其transform属性值实现. 位置改变: var transform = CGAffineTransformMakeTranslation( ...

  3. 最新swift4.0 图片进行尺寸大小及体积压缩

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Menlo; color: #4dbf56; background-color: #282b3 ...

  4. 如何用JavaScript在浏览器端获取图片的原始尺寸大小?

    var img = $("#img_id"); // Get my img elem var pic_real_width, pic_real_height; $("&l ...

  5. ios-改变图片的尺寸

    //改变图片的尺寸 -(UIImage*) OriginImage:(UIImage *)image scaleToSize:(CGSize)size { UIGraphicsBeginImageCo ...

  6. Python 批量修改图片格式和尺寸

    公司的一个项目要求把所有4096x4096的图片全部转化成2048x2048的图片,这种批量转换图片大小的软件网上很多,我的同事原来使用的美图看看的批量转换,但是稍微有点麻烦,每次还需要指定要转换的图 ...

  7. Python批量修改图片格式和尺寸

    Python批量修改图片格式和尺寸 备注: 1.导入了PIL库,是处理图片用的,很强大; 2.导入了的win32库,是判断隐藏文件用的,我们的项目需要删除隐藏文件,不需要的可以直接找到删除. 3.导入 ...

  8. Python3.7 练习题(三) 将指定目录下的图片进行批量尺寸大小处理

    # 将指定目录下的图片进行批量尺寸大小处理 #修改图片尺寸 导入Image os 快捷键 alt+enter import os from PIL import Image def process_i ...

  9. python:批量修改文件名批量修改图片尺寸

    批量修改文件名  参考博客:https://www.cnblogs.com/zf-blog/p/7880126.html 功能:批量修改文件名 1 2 3 4 5 6 7 8 9 10 11 12 1 ...

随机推荐

  1. Eclipse版本推荐(tomcat运行项目:web、maven)

    1.区别 Eclipse根据特性和jdk版本,从Eclipse官网可看到,分为:Neon/Oxygen/Mars/Luna/Kepler/Juno/Indigo/Helios...等等. Eclips ...

  2. Linux文件的I/O操作

    C标准函数与系统函数的区别   标准函数printf调用应用层api,然后应用层api调用内核层api,再通过内核层api调用硬件设备   一个pirntf打印helloworld那么sys_writ ...

  3. 第五周 day5 python学习笔记

    1.软件开发的常规目录结构 更加详细信息参考博客:http://www.cnblogs.com/alex3714/articles/5765046.html         2.python中的模块 ...

  4. sql语句的group by 与 inner join

    一.理解group by和聚合函数 先来看下表1,表名为test: 表1 执行如下SQL语句: 1 2 SELECT name FROM test GROUP BY name 你应该很容易知道运行的结 ...

  5. Struts2.3.4.1 + Spring3.1.2 + Hibernate4.1.6整合

    1. Jar包 2. web.xml配置 3. struts.xml配置 4. hibernate.cfg.xml配置 5. applicationContext.xml配置 6. log4j.pro ...

  6. Nginx 作为 WebSockets 代理

    WebSocket 协议给我们提供了一个创建可以支持客户端和服务端进行双向实时通信的web应用程序的方法.相比之前使用的方法,WebSocket(作为HTML5的一部分)可以使我们更容易开的发出这种类 ...

  7. springmvc小结(下)

    1.@ModelAttribute 1.给共享的数据设置model数据设置,贴在形参上,也可以贴在方法上,设置一个model的key值 2.当controller方法返回一个对象的时候,,缺省值会把当 ...

  8. 在win7中通过手机投放媒体

    依次展开>>> 设置项 开启服务项: 和   在更给网络属性为 打开wmplayer开启两个允许 在手机端无线投屏选择设备即可

  9. 【题解】洛谷P1032 [NOIP2002TG]字串变换(BFS+字符串)

    洛谷P1032:https://www.luogu.org/problemnew/show/P1032 思路 初看题目觉得挺简单的一道题 但是仔细想了一下发现实现代码挺麻烦的 而且2002年的毒瘤输入 ...

  10. enmu枚举类型

    在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等.如果把这些量说明为整型,字符型或其它类型显然是不妥当的.为此,C语言提供了一 ...