Hướng dẫn resize all images in a folder python opencv - thay đổi kích thước tất cả các hình ảnh trong một thư mục python opencv

5

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang cố gắng chuyển đổi hình ảnh độ phân giải cao thành một thứ dễ quản lý hơn cho việc học máy. Hiện tại tôi có mã để thay đổi kích thước hình ảnh theo chiều cao và chiều rộng mà tôi muốn tuy nhiên tôi phải thực hiện một hình ảnh tại một thời điểm không tệ khi tôi chỉ thực hiện hình ảnh 12-24 nhưng tôi muốn mở rộng quy mô để làm vài trăm hình ảnh. Tôi đang cố gắng đọc trong một thư mục thay vì các hình ảnh riêng lẻ và lưu các hình ảnh mới trong một thư mục mới. Hình ảnh ban đầu sẽ thay đổi từ .jpg, .png, .tif, v.v. Nhưng tôi muốn làm cho tất cả các hình ảnh đầu ra như.

import os
from PIL import Image

filename = "filename.jpg"
size = 250, 250
file_parts = os.path.splitext(filename)

outfile = file_parts[0] + '_250x250' + file_parts[1]
try:
    img = Image.open(filename)
    img = img.resize(size, Image.ANTIALIAS)
    img.save(outfile, 'PNG')
except IOError as e:
    print("An exception occured '%s'" %e)

Bất kỳ sự giúp đỡ với vấn đề này được đánh giá cao.

Đã hỏi ngày 6 tháng 3 năm 2019 lúc 17:54Mar 6, 2019 at 17:54

Hướng dẫn resize all images in a folder python opencv - thay đổi kích thước tất cả các hình ảnh trong một thư mục python opencv

2

Giả sử giải pháp bạn đang tìm kiếm là xử lý nhiều hình ảnh cùng một lúc - đây là một giải pháp. Xem ở đây để biết thêm.

from multiprocessing import Pool

def handle_image(image_file):
    print(image_file)
    #TODO implement the image manipulation here

if __name__ == '__main__':
    p = Pool(5) # 5 as an example
    # assuming you know how to prepare image file list
    print(p.map(handle_image, ['a.jpg', 'b.jpg', 'c.png'])) 

Đã trả lời ngày 6 tháng 3 năm 2019 lúc 18:05Mar 6, 2019 at 18:05

Baldermanbalermanbalderman

21.7K6 Huy hiệu vàng31 Huy hiệu bạc46 Huy hiệu đồng6 gold badges31 silver badges46 bronze badges

Bạn có thể sử dụng điều này:

#!/usr/bin/python                                                  
from PIL import Image                                              
import os, sys                       

path = "\\path\\to\\files\\"
dirs = os.listdir( path )                                       

def resize():
    for item in dirs:
        if os.path.isfile(path+item):
            im = Image.open(path+item)
            f, e = os.path.splitext(path+item)
            imResize = im.resize((200,100), Image.ANTIALIAS)
            imResize.save(f+'.png', 'png', quality=80)

resize()

Đã trả lời ngày 6 tháng 3 năm 2019 lúc 18:11Mar 6, 2019 at 18:11

Hướng dẫn resize all images in a folder python opencv - thay đổi kích thước tất cả các hình ảnh trong một thư mục python opencv

Aaron Pereiraaaron PereiraAaron Pereira

1641 Huy hiệu vàng1 Huy hiệu bạc9 Huy hiệu đồng1 gold badge1 silver badge9 bronze badges

0

Bạn có thể lặp lại nội dung của một thư mục với

import os

for root, subdirs, files in os.walk(MY_DIRECTORY):
    for f in files:
        if f.endswith('png'):
            #do something 

Đã trả lời ngày 6 tháng 3 năm 2019 lúc 18:01Mar 6, 2019 at 18:01

Hướng dẫn resize all images in a folder python opencv - thay đổi kích thước tất cả các hình ảnh trong một thư mục python opencv

MitchmitchMitch

3.2061 Huy hiệu vàng19 Huy hiệu bạc 30 Huy hiệu Đồng1 gold badge19 silver badges30 bronze badges

Bạn có thể chạy qua tất cả các hình ảnh bên trong thư mục bằng glob. Và sau đó thay đổi kích thước hình ảnh với opencv như sau hoặc như bạn đã làm với

from multiprocessing import Pool

def handle_image(image_file):
    print(image_file)
    #TODO implement the image manipulation here

if __name__ == '__main__':
    p = Pool(5) # 5 as an example
    # assuming you know how to prepare image file list
    print(p.map(handle_image, ['a.jpg', 'b.jpg', 'c.png'])) 
0.

import glob
import cv2
import numpy as np

IMG_DIR='home/xx/imgs'
def read_images(directory):
    for img in glob.glob(directory+"/*.png"):
        image = cv2.imread(img)
        resized_img = cv2.resize(image/255.0  , (250 , 250))

        yield resized_img

resized_imgs =  np.array(list(read_images(IMG_DIR)))

Đã trả lời ngày 6 tháng 3 năm 2019 lúc 18:02Mar 6, 2019 at 18:02

Hướng dẫn resize all images in a folder python opencv - thay đổi kích thước tất cả các hình ảnh trong một thư mục python opencv

Achintha ihalageachintha ihalageAchintha Ihalage

2.0864 Huy hiệu vàng16 Huy hiệu bạc 30 Huy hiệu Đồng4 gold badges16 silver badges30 bronze badges

Tôi đã sử dụng:

from PIL import Image
import os, sys

path = os.path.dirname(os.path.abspath(__file__))
dirs = os.listdir( path )
final_size = 244
print(dirs)

def resize_aspect_fit():
    for item in dirs:
         if ".PNG" in item:
             print(item)
             im = Image.open(path+"\\"+item)
             f, e = os.path.splitext(path+"\\"+item)
             size = im.size
             print(size)
             ratio = float(final_size) / max(size)
             new_image_size = tuple([int(x*ratio) for x in size])
             im = im.resize(new_image_size, Image.ANTIALIAS)
             new_im = Image.new("RGB", (final_size, final_size))
             new_im.paste(im, ((final_size-new_image_size[0])//2, (final_size-new_image_size[1])//2))
             print(f)
             new_im.save(f + 'resized.jpg', 'JPEG', quality=400)# png
resize_aspect_fit()

Đã trả lời ngày 9 tháng 7 năm 2019 lúc 8:15Jul 9, 2019 at 8:15

sqp_125sqp_125sqp_125

5186 Huy hiệu bạc20 Huy hiệu Đồng6 silver badges20 bronze badges

Bạn có thể sử dụng mã này để thay đổi kích thước nhiều hình ảnh và lưu chúng sau khi chuyển đổi trong cùng một thư mục để nói kích thước của (200.200):

import os
from PIL import Image

f = r' '      #Enter the location of your Image Folder
    
new_d = 200

for file in os.listdir(f):
    f_img = f+'/'+file
    try:
        img = Image.open(f_img)
        img = img.resize((new_d, new_d))
        img.save(f_img)
    except IOError:
        pass

Đã trả lời ngày 22 tháng 7 năm 2020 lúc 1:53Jul 22, 2020 at 1:53

Hướng dẫn resize all images in a folder python opencv - thay đổi kích thước tất cả các hình ảnh trong một thư mục python opencv

0

Bạn có thể cố gắng sử dụng thư viện PIL để thay đổi kích thước hình ảnh trong Python

import PIL
import os
import os.path
from PIL import Image


path = r'your images path here'
for file in os.listdir(path): 
    f_img = path+"/"+file
    img = Image.open(f_img)
    img = img.resize((100, 100)) #(width, height)
    img.save(f_img)

Đã trả lời ngày 24 tháng 11 năm 2020 lúc 23:18Nov 24, 2020 at 23:18

Hướng dẫn resize all images in a folder python opencv - thay đổi kích thước tất cả các hình ảnh trong một thư mục python opencv

1

Làm cách nào để thay đổi kích thước nhiều hình ảnh trong opencv?

Approach:..
Đầu tiên, tải các thư viện cần thiết vào tệp Python (Argparse, OpenCV, v.v.) ..
Chúng tôi đang sử dụng hàm argparse () để có được đường dẫn thư mục hình ảnh mà chúng tôi cần thực hiện thay đổi kích thước ..
Sử dụng cho vòng lặp để lặp lại mọi hình ảnh trong thư mục ..
Tải hình ảnh trong một biến bằng CV2 ..

Làm thế nào để tôi thay đổi kích thước nhiều hình ảnh cùng một lúc trong Python?

Bạn có thể thay đổi kích thước nhiều hình ảnh trong Python với thư viện PIL tuyệt vời và một trợ giúp nhỏ của thư viện HĐH (hệ điều hành).Bằng cách sử dụng hàm Os.ListDir (), bạn có thể đọc tất cả các tên tệp trong một thư mục. Sau đó, tất cả những gì bạn phải làm là tạo một vòng lặp để mở, thay đổi kích thước và lưu mỗi hình ảnh trong thư mục.By using os. listdir() function you can read all the file names in a directory. After that, all you have to do is to create a for loop to open, resize and save each image in the directory.

Làm cách nào để thay đổi kích thước một thư mục hình ảnh?

Chọn một nhóm hình ảnh với chuột của bạn, sau đó nhấp chuột phải vào chúng.Trong menu bật lên, chọn cách thay đổi kích thước hình ảnh.Một cửa sổ bổ sung hình ảnh sẽ mở.Chọn kích thước hình ảnh mà bạn muốn từ danh sách (hoặc nhập kích thước tùy chỉnh), chọn các tùy chọn bạn muốn, sau đó nhấp vào Thay đổi kích thước.

Dsize trong CV2 thay đổi kích thước là gì?

DSIZE: Đó là kích thước mong muốn của hình ảnh đầu ra, nó có thể là chiều cao và chiều rộng mới.FX: Hệ số tỷ lệ dọc theo trục ngang.FY: Hệ số tỷ lệ dọc theo trục dọc.Nội suy: Nó cho chúng ta tùy chọn các phương pháp khác nhau để thay đổi kích thước hình ảnh.the desired size of the output image, it can be a new height and width. fx : Scale factor along the horizontal axis. fy : Scale factor along the vertical axis. interpolation : It gives us the option of different methods of resizing the image.