Как мне пройти эту ошибку _tkinter.Tcl? - PullRequest
0 голосов
/ 22 октября 2018

В настоящее время я пытаюсь запустить следующий код в 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()

Traceback:

   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 не был установлен должным образом, мне нужно, чтобы школа переустановила это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...