Python 3.x Tkinter和PIL在Python中相互干扰(Image.open)
请记住,我只是展示了代码的一小部分 在不导入Tkinter的情况下,以下代码有效:Python 3.x Tkinter和PIL在Python中相互干扰(Image.open),python-3.x,image,tkinter,Python 3.x,Image,Tkinter,请记住,我只是展示了代码的一小部分 在不导入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 + '/' + 'Computa
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, y1, x2, 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'
导入操作系统
进口PIL
从PIL导入ImageTk,图像
进口cv2
将numpy作为np导入
导入pytesseract
作为pd进口熊猫
将tkinter作为tk导入
从tkinter进口*
##农作物号牌
diretory_save_cut_out_NP=main_folder_directory++'/'++'计算目录/NP&VIN/Original NP/'
对于范围内的x(0,文件计数):
im=Image.open(原始文件目录+注册文件列表名称[0]+'.png'))
x1=140
y1=740
x2=im宽度-1200
y2=im高度-2470
区域=中间作物((x1,y1,x2,y2))
region.save(diretory\u save\u cut\u out\u NP+reg\u doc\u list\u name[0]+'.png')
注册文档列表名称。pop(0)
Tkinter回调中的异常
回溯(最近一次呼叫最后一次):
文件“C:\Users\lol\Anaconda3\lib\tkinter\\ uuuuu init\uuuu.py”,第1883行,在调用中__
返回self.func(*args)
扫描仪中第35行的文件“”
im=Image.open(原始文件目录+注册文件列表名称[0]+'.png'))
AttributeError:类型对象“Image”没有属性“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)
您使用的是
tkinter.Image()
,而不是PIL.Image()
,因为来自tkinter import*
@acw1668 mate您很好,它现在可以工作了,谢谢您*
导入并不总是有害的,但它们被滥用了很多<如果您确实需要大量的tk
内容,那么code>import tkinter as tk会更好,因为它不会因为潜在的冲突而污染您的命名空间。顺便说一句,这就是导入时不使用*
的原因,除非确定,否则只需导入您需要的内容,如从tkinter导入tk、标签、按钮等