Bagaimana untuk mengubah saiz, memangkas, memutar dan membalikkan imej dalam Python

WBOY
Lepaskan: 2023-05-10 10:43:21
ke hadapan
2802 orang telah melayarinya

    Ubah saiz, potong, putar, selak gambar

    Pertama sekali, gambar asal kami dimuat turun dalam talian 10 buahSaiz yang berbeza gambar adalah seperti berikut:

    Bagaimana untuk mengubah saiz, memangkas, memutar dan membalikkan imej dalam Python

    Operasi 1: ubah saiz Saiz semula gambar kepada saiz yang sama (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))
    Salin selepas log masuk

    Operasi 2: Pangkas (termasuk pemangkasan di sekeliling tengah dan pemangkasan rawak)

    #图像随机剪裁和中心剪裁
    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))
    Salin selepas log masuk

    Operasi 3: Putaran rawak

    #随机旋转
    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))
    Salin selepas log masuk

    Operasi 4: Flip

    #图片依概率翻转,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))
    Salin selepas log masuk

    Berikut menunjukkan gambar selepas operasi:

    Bagaimana untuk mengubah saiz, memangkas, memutar dan membalikkan imej dalam Python

    Dari atas ke bawah, setiap baris adalah hasil daripada saiz semula, potong tengah, flip, potong rawak dan putaran rawak

    Transformasi imej tunggal Saiz——img.resize()

    Ini adalah program mudah yang saya pelajari, yang boleh menukar saiz imej, sama ada jpg atau 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)
    Salin selepas log masuk

    Ini fungsi img.resize ((lebar, tinggi),Imej.ANTIALIAS)

    Parameter kedua:

    • Image.NEAREST: Kualiti rendah

    • Image.BILINEAR: Dwilinear

    • Image.BICUBIC: Interpolasi splin kubik

    • Image.ANTIALIAS : Kualiti tinggi

    Atas ialah kandungan terperinci Bagaimana untuk mengubah saiz, memangkas, memutar dan membalikkan imej dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Label berkaitan:
    sumber:yisu.com
    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan