python-opencv如何读取图片及尺寸修改
ithicker 人气:0python-opencv读取图片及尺寸修改
修改图像尺寸大小
使用shape可得到图片的尺寸信息,宽度及高度和通道数,道数问题描述一个像素点,如果是灰度,那么只需要一个数值来描述它,就是单通道,如果有RGB三种颜色,就是三通道
import cv2 img=cv2.imread('1.jpg') print(img.shape) res=cv2.resize(img,(126,126))#修改图像尺寸 cv2.imshow('new_img',res)#显示新图像 cv2.imshow('img',img)#依旧显示原始图像,进行对比 #cv2.imwrite('new_img_path',res) cv2.waitKey(0) cv2.destoryAllWindows()
使用opencv进行图片批量修改尺寸
这几天接到公司设计方面的需求,需要将几十张图片统一修改为固定的尺寸(1080*1080),其实通过ps动作批处理可以完成。但是如果没有安装ps咋办嘞?或者懒得打开ps,可以考虑通过pyhton快速处理
注意事项
- 存在图片为长方形或者正方形的情况
- 存在图片格式的差异化
方法如下
import cv2 import os outtype = '.png' # <---------- 输出的统一格式 image_size_h =0 image_size_w = 300 # <---------- 设定长 source_path = "E:\\domo\\pic"+"\\" # <---------- 源文件路径 target_path = "E:\\domo\\newdomo"+"\\" # <---------- 输出目标文件路径 if not os.path.exists(target_path): os.makedirs(target_path) image_list = os.listdir(source_path) # 获得文件名 i = 0 for file in image_list: i = i + 1 image_source = cv2.imread(source_path + file) # 读取图片d print("处理中-->",file) if image_source.shape[0] == image_source.shape[1]: #图片是正方形 image_size_h = image_size_w image = cv2.resize(image_source, (image_size_w, image_size_h), 0, 0, cv2.INTER_LINEAR) # 修改尺寸 # cv2.imwrite(target_path + str(i) + outtype, image) # 重命名并且保存 (统一图片格式) cv2.imwrite(target_path + str(file),image) # 保留原命名 else: #图片是非方形 sizenum = image_source.shape[0]/image_source.shape[1] image_size_h =sizenum * image_size_w image = cv2.resize(image_source, (image_size_w, int(image_size_h)), 0, 0, cv2.INTER_LINEAR) # 修改尺寸 # cv2.imwrite(target_path + str(i) + outtype, image) # 重命名并且保存 (统一图片格式) cv2.imwrite(target_path + str(file),image) # 保留原命名 print("批量处理完成")
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
加载全部内容