一个文件夹中含有大量的图片文件,jpg格式和png格式的。需要从中选出一些比较适合电脑分辨率的,也就是宽度大于高度的。考虑到Python的库比较多,功能比较强大,觉得使用Python进行编程实现。
Python创建新的文件夹
这一步在后面的程序中并没有用到,但我还是在程序上实现了一下。采用的函数为mkdir()。代码块如下:
import os
def make_file(my_file_name):
is_exists = os.path.exists(my_file_name)
if not if_exists:
os.mkdir(my_file_name)
return my_file_name
上述代码通过判断该文件是否存在,然后再新建文件夹。建议使用绝对路径。
Python读取文件夹中的图片内容以及存取
代码块如下:
import os
import cv2
def read_picture(old_picture_file_name, new_picture_file_name):
i = 0 #用来计算该文件夹中的图片数
for pic_name in os.listdir(old_picture_file_name):
img = cv2.imread(old_picture_file_name + "/" +pic_name, cv2.IMREAD_UNCHANGED)
pic_height, pic_width, channel = img.shape
if pic_width >= pic_height:
cv2.imwrite(new_picture_file_name + "/" + str(i) + ".png", img)
i = i + 1
return i
读取图片需要导入的模块是cv2,是计算机视觉领域常用的一个库,安装该库的方法是直接
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple/
- os.listdir()函数返回该文件夹中图片的文件名,是一个字符串列表,然后pic_name依次遍历该列表中的值。
- cv2.imread()函数两个参数分别是文件名和读取方式,读取方式为IMREAD_UNCHANGED表示读取后不改变图片,比如彩色图片读取后存取的还是彩色图片。
- img.shape返回该图片的高度,宽度以及信道
- cv2.imwrite()函数两个参数分别是存取的图片的路径加上文件名,需要存取的图片。
注:在上面cv2.imwrite函数中,建议将.png改为.jpg,使用.png格式存取时要求较高,会出现警告,但不影响程序运行。