python3+OpenCV批处理图片

python版本是3.6

OpenCV是3.4.1

OpenCV在读取图片方面使用很方便,主要会用到imread()、imwrite()、imdecode()、imencode()

代码如下

import cv2
import os
def Image_Resize(dir):     #输入起始路径
    for parent,dirnames,filenames in os.walk(dir):       # 三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字
	    for filename in filenames:
		    img_path=os.path.join(parent,filename)    #os.path.join(a,b) 合并路径
			save_path=os.path.join('   ',filename)    #以原名称存在某一位置
			img=cv2.imread(img_path)
			dim=(256,256)     #规定像素大小
			resized=cv2.resize(img,dim,interpolation = cv2.INTER_AREA) #采用的差值方法是INTER_LINEAR
			cv2.imwrite(save_path,resized)
Image_Resize('  ')
以上是使用imread 和imwrite进行批处理图片的大小,但是要注意,这两个函数无法处理路径中含有中文的图片,而且opencv在读取图片时不会报错,只会使得读

入得数据为none。

在处理含有中文路径的图片时,应采用imdecode(解码)和imencode(编码)

代码如下:

import os
import cv2 as cv2
import numpy as np
def cv_imread(file_path):           #为了方便,把它又定义成了了一个函数,方便调用
    cv_img=cv2.imdecode(np.fromfile(file_path,dtype=np.uint8),-1)
    return cv_img
def img_resize(filepath):  
    for parent, dirnames, filenames in os.walk(filepath):  # 三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字  
        for filename in filenames:
            img_path =os.path.join(parent,filename)   #将父目录和名字组合到一起形成访问路径
            savepaths=os.path.join('D:/NEW_DATA1',filename)			
            img=cv_imread(img_path) # 读取图片  
            res=cv2.resize(img,(128,64),interpolation=cv2.INTER_AREA ) #改变图片尺寸  
            cv2.imencode('.jpg',res)[1].tofile(savepaths) 
img_resize('D:/rest_picture')

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值