Ядро Jupyter падает при попытке отобразить изображение с OpenCV - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь запустить пример из здесь

import cv2

def viewImage(image):
    cv2.namedWindow('Display', cv2.WINDOW_NORMAL)
    cv2.imshow('Display', image)
    print('test')
    cv2.waitKey(0)
    cv2.destroyAllWindows()
def grayscale_17_levels (image):
    high = 255
    while(1):  
        low = high - 15
        col_to_be_changed_low = np.array([low])
        col_to_be_changed_high = np.array([high])
        curr_mask = cv2.inRange(gray, col_to_be_changed_low,col_to_be_changed_high)
        gray[curr_mask > 0] = (high)
        high -= 15
        if(low == 0 ):
            break

image = cv2.imread('ombre_circle.png')
viewImage(image)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
grayscale_17_levels(gray)
viewImage(gray)

Всякий раз, когда я запускаю код, я получаю сообщение об ошибке:

Перезапуск ядра
Ядро main.ipynb, похоже, умерло.Он перезапустится автоматически.

I, когда я закомментирую следующие строки:

#cv2.namedWindow('Display', cv2.WINDOW_NORMAL)
#cv2.imshow('Display', image)

ядро ​​запускается и выводит «test», и я не получаю ошибку.

Я использую:

  • Ubuntu-сервер 18.04
  • Jupyter lab 1.1.3
  • opencv-python 4.1.1.26

Я запускаю это на сервере, а не в локальной среде

Я нашел обходной путь для этой проблемы, отобразив его с помощью Matplotlib:

def viewImage(image):
    plt.subplot(122)
    plt.title("RGB")
    plt.imshow(image)
    plt.show()

image = cv2.imread('img/ombre_circle.png')
viewImage(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
grayscale_17_levels(gray)
viewImage3(cv2.cvtColor(gray, cv2.COLOR_GRAY2RGB))

Однако это не решаетпроблема и требует дополнительных преобразований / кода, поэтому я хотел бы найти решение для отображения с opencv.

Переадресация X11 включена.

Я попытался открыть соединение SSH с помощью -Y и -Флаг C ( через этот вопрос ), но это не исправляет его.

Есть идеи, в чем может быть проблема?

...