图像处理:图像统一缩放到一定尺寸python+opencv

图像处理:图像统一缩放到一定尺寸python+opencv

代码

import os.path
import glob
import cv2
def convert(indire,outdir,width=128,height=128):
    #src=cv2.imread(indir,cv2.IMREAD_ANYCOLOR)
    src = cv2.imread(indire,cv2.IMREAD_ANYCOLOR)
    try:
        dst=cv2.resize(src,(width,height),interpolation=cv2.INTER_CUBIC)
        cv2.imwrite(os.path.join(outdir,os.path.basename(indir)),dst)
        #os.path.join()把两个路径连在一起,os.path.basename()是把括号里面的最后一个路径的名字读出来
        #在这儿就是1.JPG这样的,
        #cv2.imwrite(outdir,dst)
    except Exception as e:
        print(e)
indir=r"F:/B/cat1/*.jpg"
outdir=r"F:/B/cat2"
for indir in glob.glob(indir):
     convert(indir,outdir)

CV知识补充

dst=cv2.resize(src,(width,height),interpolation=cv2.INTER_CUBIC)

interpolation 选项 所用的插值方法
INTER_NEAREST 最近邻插值
INTER_LINEAR 双线性插值(默认设置)
INTER_AREA 使用像素区域关系进行重采样。 它可能是图像抽取的首选方法,因为它会产生无云纹理的结果。 但是当图像缩放时,它类似于INTER_NEAREST方法。
INTER_CUBIC 4x4像素邻域的双三次插值
INTER_LANCZOS4 8x8像素邻域的Lanczos插值

路径知识

os.path.join()

1.os.path.join()函数
语法: os.path.join(path1[,path2[,……]])
返回值:将多个路径组合后返回
2.os.path.join()函数:连接两个或更多的路径名组件
如果各组件名首字母不包含’/’,则函数会自动加上
如果有一个组件是一个绝对路径,则在它之前的所有组件均会被舍弃
如果最后一个组件为空,则生成的路径以一个’/’分隔符结尾
注意:若出现”./”开头的参数,会从”./”开头的参数的上一个参数开始拼接

os.path.basename()

os.path.basename():返回path最后的文件名
如果path以 / 或 \ 结尾,那么就会返回空值。

你可能感兴趣的:(图像处理:图像统一缩放到一定尺寸python+opencv)