python opencv 批量改变图片的尺寸大小的方法
作者:有理想柏先生 发布时间:2021-09-13 12:55:01
标签:opencv,批量,图片,大小
我目标文件夹下有一大批图片,我要把它转变为指定尺寸大小的图片,用pthon和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大小的图片
来源:https://www.cnblogs.com/carlber/p/10411984.html
0
投稿
猜你喜欢
- 一、is_numberic函数简介国内一部分CMS程序里面有用到过is_numberic函数,我们先看看这个函数的结构bool is_num
- 前言最近遇到的几个网站在提交密码时提交的已经是密文,也就是说在网络上传输的密码是密文,这样提升了密码在网络传输中的安全性。后端语言加解密已
- 配置好virtualenv 和virtualenvwrapper后,使用pycharm创建新项目。之后要面临的问题就来了,之前一直使用的是s
- Django将秒转换为xx天xx时xx分,具体代码如下所示:from django.utils.translation import nge
- 在pycharm中创建django项目的方法步骤,分享给大家,具体如下:创建完成后,我们可以看看django项目是否可以启动在Termina
- 最近在做图片相关的工作,面对各种格式的图片转换,在OpenCV跟Pillow之间来回切换。觉得有必要把这些东西记录下来,以备不时之需。首先介
- Python文件遍历os.walk()与os.listdir()在图片处理过程中,样本数据的组织是个常见的问题,样本组织好了,后面数据转换、
- 网页广告 Banner 设计图文手册:采用以下要点来改善你的BANNER。广告并不便宜。 确信你的广告被第一时间读到。使用像这样的Sans
- 由于最近有个任务需要在python环境下跑,项目是python3.6 + tensorflow1.3.1.现总结安装环境:卸载Python3
- 本文实例讲述了asp.net C#实现解压缩文件的方法。一共给大家介绍了三段代码,一个是简单的解压缩单个zip文件,后一个可以解压批量的大量
- 问题:我们每天都要编写一些Python程序,或者用来处理一些文本,或者是做一些系统管理工作。程序写好后,只需要敲下python命令,便可将程
- 本文实例为大家分享了JSP学生信息管理系统源码,供大家参考,具体内容如下新建学生信息数据库1.添加记录模块<%@ page conte
- 参考官网地址:Windows端:https://tensorflow.google.cn/install/source_windowsCPU
- documentFragment 是一個無父對象的document對象.他支持以下DOM2方法:appendChild, cloneNode
- python3 默认的是UTF-8格式,但在在用dump写入的时候仍然要注意:如下import jsondata1 = { "Te
- 前言我最近都在写一些Python 3.8的新功能介绍的文章,在自己的项目中也在提前体验新的Python版本。为什么我对这个Python 3.
- 最近开发一套接口,写个Python脚本,使用requests.session模拟一下登录.因为每次需要获取用户信息,登录需要带着sessio
- 本文实例讲述了python打开url并按指定块读取网页内容的方法。分享给大家供大家参考。具体实现方法如下:import urllibpage
- 在python中gui编程有很多中选择,如果是相对简单的gui的话使用python自带的tkinter即可,但是由于tkinter没有详细的
- theme: channing-cyan网页伪静态将 * 页伪装成静态网页,可以提升网页被搜索引擎检索道德概率表现形式为:网址看着像是一个具