Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Tkinter和PIL在Python中相互干扰(Image.open)_Python 3.x_Image_Tkinter - Fatal编程技术网

Python 3.x Tkinter和PIL在Python中相互干扰(Image.open)

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

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

在不导入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, 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、标签、按钮等