Tkinter 和 PIL 在 Python 中相互干扰Image.open

问题描述

请记住,我只是展示了一小部分代码

在没有导入 Tkinter 的情况下,以下代码有效:

import os
import PIL
from PIL import ImageTk,Image
import cv2
import numpy as np
import PyTesseract
import pandas as pd

##CROPS NUMBER PLATE
diretory_save_cut_out_NP = main_folder_directory + '/' + 'computational directory/NP & VIN/Original NP/'

for x in range(0,file_count):
    im = Image.open(original_file_directory + reg_doc_list_names[0] + '.png')
    x1 = 140
    y1 = 740
    x2 = im.width - 1200
    y2 = im.height - 2470 
    region = im.crop((x1,y1,x2,y2))
    region.save(diretory_save_cut_out_NP + reg_doc_list_names[0] + '.png')
    reg_doc_list_names.pop(0)

但是,如果我导入 Tkinter 并尝试制作 GUI,则会弹出此错误

import os
import PIL
from PIL import ImageTk,Image
import cv2
import numpy as np
import PyTesseract
import pandas as pd
import tkinter as tk
from tkinter import *

    ##CROPS NUMBER PLATE
    diretory_save_cut_out_NP = main_folder_directory + '/' + 'computational directory/NP & VIN/Original NP/'

    for x in range(0,file_count):
        im = Image.open(original_file_directory + reg_doc_list_names[0] + '.png')
        x1 = 140
        y1 = 740
        x2 = im.width - 1200
        y2 = im.height - 2470 
        region = im.crop((x1,y2))
        region.save(diretory_save_cut_out_NP + reg_doc_list_names[0] + '.png')
        reg_doc_list_names.pop(0)

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\lol\Anaconda3\lib\tkinter\__init__.py",line 1883,in __call__
    return self.func(*args)
  File "<ipython-input-11-a57cb1712307>",line 35,in scanner
    im = Image.open(original_file_directory + reg_doc_list_names[0] + '.png')
AttributeError: type object 'Image' has no attribute 'open'

我尝试了一些东西,但没有任何效果,你们有什么建议吗?提前致谢,我会尽快回复

解决方法

代码有效,感谢@acw1668:

##CROPS NUMBER PLATE
diretory_save_cut_out_NP = main_folder_directory + '/' + 'Computational directory/NP & VIN/Original NP/'

for x in range(0,file_count):
    im = PIL.Image.open(original_file_directory + reg_doc_list_names[0] + '.png')
    x1 = 140
    y1 = 740
    x2 = im.width - 1200
    y2 = im.height - 2470 
    region = im.crop((x1,y1,x2,y2))
    region.save(diretory_save_cut_out_NP + reg_doc_list_names[0] + '.png')
    reg_doc_list_names.pop(0)