Как мне избавиться от этой ошибки _tkinter.Tcl?

В настоящее время я пытаюсь запустить следующий код в Linux, чтобы можно было нарисовать рамку вокруг определенных частей изображения. Когда я запускаю код, я получаю следующую ошибку, и я действительно не понимаю, как правильно решить эту проблему. Я нахожусь на сервере школы, поэтому у меня нет доступа к sudo, если я не отправлю в школу билет для установки чего-либо! Любое руководство будет очень признательно

import os
import matplotlib.pyplot as plt
import cv2
from matplotlib.widgets import RectangleSelector
from generate_xml import write_xml

# global constants
img = None
tl_list = []
br_list = []
object_list = []

# constants
image_folder = 'images'
savedir = 'annotations'
obj = 'anomaly'


def line_select_callback(clk, rls):
    global tl_list
    global br_list
    global object_list
    tl_list.append((int(clk.xdata), int(clk.ydata)))
    br_list.append((int(rls.xdata), int(rls.ydata)))
    object_list.append(obj)


def onkeypress(event):
    global object_list
    global tl_list
    global br_list
    global img
    if event.key == 'q':
        print(object_list)
        write_xml(image_folder, img, object_list, tl_list, br_list, savedir)
        tl_list = []
        br_list = []
        object_list = []
        img = None
        plt.close()


def toggle_selector(event):
    toggle_selector.RS.set_active(True)


if __name__ == '__main__':
    for n, image_file in enumerate(os.scandir(image_folder)):
        img = image_file
        fig, ax = plt.subplots(1)
        mngr = plt.get_current_fig_manager()
        mngr.window.setGeometry(250, 120, 1280, 1024)
        image = cv2.imread(image_file.path)
        image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
        ax.imshow(image)

        toggle_selector.RS = RectangleSelector(
            ax, line_select_callback,
            drawtype='box', useblit=True,
            button=[1], minspanx=5, minspany=5,
            spancoords='pixels', interactive=True
        )
        bbox = plt.connect('key_press_event', toggle_selector)
        key = plt.connect('key_press_event', onkeypress)
        plt.show()

Выслеживать:

   File "draw_box.py", line 50, in <module>
    fig, ax = plt.subplots(1)
  File "/cm/shared/apps/tensorflow/1.4/python3/GPU/lib/python3.6/site-packages/matplotlib/pyplot.py", line 1198, in subplots
    fig = figure(**fig_kw)
  File "/cm/shared/apps/tensorflow/1.4/python3/GPU/lib/python3.6/site-packages/matplotlib/pyplot.py", line 548, in figure
    **kwargs)
  File "/cm/shared/apps/tensorflow/1.4/python3/GPU/lib/python3.6/site-packages/matplotlib/backend_bases.py", line 161, in new_figure_manager
    return cls.new_figure_manager_given_figure(num, fig)
  File "/cm/shared/apps/tensorflow/1.4/python3/GPU/lib/python3.6/site-packages/matplotlib/backends/_backend_tk.py", line 1044, in new_figure_manager_given_figure
    window = Tk.Tk(className = "matplotlib")
  File "/cm/shared/apps/anaconda3/4.4.0/lib/python3.6/tkinter/__init__.py", line 2017, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: Can't find a usable init.tcl in the following directories: 
    /opt/anaconda1anaconda2anaconda3/lib/tcl8.5 /cm/shared/apps/tensorflow/1.4/python3/GPU/lib/tcl8.5 /cm/shared/apps/tensorflow/1.4/python3/lib/tcl8.5 /cm/shared/apps/tensorflow/1.4/python3/GPU/library /cm/shared/apps/tensorflow/1.4/python3/library /cm/shared/apps/tensorflow/1.4/python3/tcl8.5.18/library /cm/shared/apps/tensorflow/1.4/tcl8.5.18/library

Вероятно, это означает, что Tcl установлен неправильно.

Поскольку в последней строке сообщения об ошибке указано, что Tcl не был установлен должным образом, мне нужно было бы переустановить его в школе?

Согласно приведенному здесь коду, вы не импортировали tkinter. Если вы пытаетесь использовать matplotlib с его интерфейсом tkinter, я считаю, что сначала вам нужен код. Я считаю, что вам нужен правильный импорт и код TkAgg.

Mike - SMT 22.10.2018 19:09

@ Mike-SMT Я видел в учебнике на YouTube по этому коду джентльмен, который сказал использовать matplotlib.use ('tkAgg'), это звучит правильно? Я с этим не знаком.

James 22.10.2018 19:37

Звучит примерно правильно. Я никогда не использовал matplotlib без tkinter, поэтому я не на 100% уверен, как настроить то, что вы делаете, без tkinter, являющегося графическим интерфейсом. Я уверен, что найду что-нибудь, когда у меня будет возможность.

Mike - SMT 22.10.2018 20:42
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
187
0

Другие вопросы по теме