首頁 > 後端開發 > Python教學 > Python怎麼對圖片進行resize、裁切、旋轉、翻轉

Python怎麼對圖片進行resize、裁切、旋轉、翻轉

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2023-05-10 10:43:21
轉載
2924 人瀏覽過

    對圖片進行resize、裁剪、旋轉、翻轉

    #首先我們的原始圖片是10張網路下載尺寸不一的圖片,如下:

    Python怎麼對圖片進行resize、裁切、旋轉、翻轉

    操作1:resize 將圖片resize到相同尺寸(320,240)

    from PIL import Image
    import torchvision.transforms as transforms
    #使用PIL库读入图片并进行resize
    def ResizeImage():
        if not os.path.exists(rdir):
            os.makedirs(rdir)
        for i in range(10):
            im = Image.open(dir+str(i)+".jpg")
            im = im.resize((320,240),Image.BILINEAR)  #第一个参数为想要的size,第二个参数为插值方法,双线性插值这里用的是
            im.save('{}/{}.jpg'.format(rdir, i))
    登入後複製

    操作2:剪裁(包括圍繞中心剪裁和隨機剪裁)

    #图像随机剪裁和中心剪裁
    def crop(lib):
        for i in range(10):
            img = Image.open(lib+"/"+str(i)+".jpg")
            CenterCrop = transforms.CenterCrop((240,320))   #中心裁剪
            cropped_image = CenterCrop(img)  #PIL.Image.Image
            # im=np.array(cropped_image)  #可以将PIL.Image.Image转成ndarry
            #cropped_image.show()    #将图片显示
            cropped_image.save('{}/cen_crop{}.jpg'.format(rdir, i))
            RandomCrop = transforms.RandomCrop(size=(240, 320))  #随机剪裁
            random_image = RandomCrop(img)
            random_image.save('{}/rand_crop{}.jpg'.format(rdir, i))
    登入後複製

    操作3:隨機旋轉

    #随机旋转
    def random_rotation(lib):
        for i in range(10):
            img = Image.open(lib+"/"+str(i)+".jpg")
            RR = transforms.RandomRotation(degrees=(10, 80))   #degrees为随机旋转的角度
            rr_image = RR(img)
            rr_image.save('{}/rand_rotation{}.jpg'.format(rdir, i))
    登入後複製

    操作4:翻轉

    #图片依概率翻转,p为翻转的概率
    def horizontal_flip(lib):
        for i in range(10):
            img = Image.open(lib+"/"+str(i)+".jpg")
            HF = transforms.RandomHorizontalFlip(p=1.0)  #p为概率,缺省时默认0.5
            hf_image = HF(img)
            hf_image.save('{}/hori_flip{}.jpg'.format(rdir, i))
    登入後複製

    下面展示一下操作後的圖片:

    Python怎麼對圖片進行resize、裁切、旋轉、翻轉

    #從上到下每行依序為resize、中心裁剪、翻轉、隨機裁剪和隨機旋轉的結果

    單張圖像變換大小——img.resize()

    這個是一段學過的簡單程序,可以改變圖像的大小,jpg,png都可以的:

    #encoding=utf-8
    #author: walker
    #date: 2014-05-15
    #function: 更改图片尺寸大小
    from PIL import Image
    '''
    filein: 输入图片
    fileout: 输出图片
    width: 输出图片宽度
    height:输出图片高度
    type:输出图片类型(png, gif, jpeg...)
    '''
    def ResizeImage(filein, fileout, width, height, type):
      img = Image.open(filein)
      out = img.resize((width, height),Image.ANTIALIAS) #resize image with high-quality
      out.save(fileout, type)
    if __name__ == "__main__":
      filein = r'0.jpg'
      fileout = r'testout.png'
      width = 6000
      height = 6000
      type = 'png'
      ResizeImage(filein, fileout, width, height, type)
    登入後複製

    這個函數img.resize ((width, height),Image.ANTIALIAS)

    第二個參數:

    • Image.NEAREST :低品質

    • Image.BILINEAR:雙線性

    • ##Image.BICUBIC :三次樣條插值

    • Image.ANTIALIAS:高品質

    以上是Python怎麼對圖片進行resize、裁切、旋轉、翻轉的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    相關標籤:
    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    最新問題
    python - ubuntu16.04 lxml的報錯
    來自於 1970-01-01 08:00:00
    0
    0
    0
    有辦法在PHP裡寫Python嗎?
    來自於 1970-01-01 08:00:00
    0
    0
    0
    python scrapy爬蟲錯誤
    來自於 1970-01-01 08:00:00
    0
    0
    0
    python相關問題求解決,有償
    來自於 1970-01-01 08:00:00
    0
    0
    0
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板