簡體   English   中英

cv2.resize()錯誤:使用不同的名稱保存相同的圖片

[英]cv2.resize() error: saves the same picture with different names

我是編程新手並嘗試制作圖像縮放器。 我希望能夠在文件名之前由用戶編寫自定義前綴。 尺寸也是慣例。

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)

我希望有人有一些想法。 先感謝您!

這是一個按比例調整大小並保存圖像的示例

    def ResizeImage(filepath, newfileName,ratio):
        image = cv2.imread(filepath)         #Open image
        height, width = image.shape[:2]      #Shapes
        image2 = cv2.resize(image, (width/ratio, height/ratio), interpolation = cv2.INTER_AREA)
        cv2.imwrite(newfileName,image2)         #saves, True if OK
        return filepath

所以,如果你打電話

image = "originalpath"
resized = ResizeImage(image,"Resized_"+image,2)
newImage = cv2.imread(resized)
cv2.imshow("new",newImage)
cv2.waitKey(1)

您應該將圖像調整大小一半

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM