Я новичок в программировании и пытаюсь создать изображение. Я хотел сделать возможность писать пользовательский префикс пользователем раньше в именах файлов. Размеры также настраиваются.cv2.resize() error: сохраняет одно и то же изображение с разными именами
cv2.imshow() работает нормально, но cv2.resize() этого не делает. Если я проверяю его с помощью imshow, он отображает только одно изображение, несмотря на цикл for, а затем cv2.imwrite сохраняет только одно изображение с именами всех выбранных изображений. Списки, похоже, в порядке.
Я надеюсь, что я ясно, код:
def openfiles():
global picture_original
global file_path
global f
# Valid filetypes
file_types=[("Jpeg files","*.jpg"),("PNG files","*.png"),("BMP files","*.bmp"),("all files","*.*")]
window.filenames = filedialog.askopenfilenames(initialdir = "/",title = "Select file",filetypes = (file_types)) # TUPLE of filepath/filenames
#f = []
# Creating a list from the tuple
for pics in window.filenames:
f.append(pics)
f = [picture.replace('/', "\\") for picture in f]
try:
for picture in f:
picture_original = cv2.imread(picture, 1)
#cv2.imshow("Preview", picture_original)
#cv2.waitKey(1)
except:
msgbox_openerror() # Error opening the file
# Getting the filepath only from the list "f":
file_path = f[0].rsplit("\\",1)[0]
view_list()
def save_command():
"""
function to save the resized pictures
"""
global picture_resized
global prefix
prefix = "Resized_"
lst_filename = []
lst_renamed = []
for i in f:
#print(f)
path,filename = os.path.split(i) # path - only filepath | filename - only filename with extension
lst_filename.append(prefix+filename)
for i in range(len(f)):
lst_renamed.append(os.path.join(path, lst_filename[i]))
for i in range(len(f)):
picture_resized = cv2.resize(picture_original, ((int(width.get())), int(height.get())))
cv2.imshow("Preview", picture_resized)
cv2.waitKey(1)
for i in lst_renamed:
cv2.imwrite(i, picture_resized)
Я надеюсь, что кто-то есть какая-то идея. Заранее спасибо!
Что вы ожидаете 'picture_original' содержать после' openfiles() 'закончен? –
Или 'picture_resized' ... в цикле нет ничего, что изменит размер, который будет зависеть от значения' i', поэтому вы в основном повторяете одно и то же на одних и тех же входах снова и снова. Аналогично, в цикле с 'imwrite' единственное, что изменяется, это имя файла. | Если у вас более одного имени файла для обработки (и как такового их хранить в списке), вы также должны иметь более одного изображения (и хранить их в списке). –
Я ожидаю, что «picture_original» и «picture_resized» должны быть списком массивов numpy. Их тип должен быть Да, вы можете быть правым, связанным с циклами. Я пытаюсь изменить размер с помощью' picture_original [i] 'и аналогично' imwrite '. –
koger23