Палитра с использованием Open CV в python

Используя OpenCv, я попытался создать простую цветовую палитру, получив значения RGB от пользователя. Я создал черное изображение с помощью numpy и изменил все изображение с введенными пользователем значениями BGR и попытался отобразить его. К сожалению, Python и Ipython перестают отвечать

import cv2
import numpy as np

while(1):

    #Getting RGB values from user

    r=int(input("Enter R value"))
    g=int(input("Enter G value"))
    b=int(input("Enter B value"))

    #Making a Black image
    img=np.zeros((520,520,3),np.uint8)

    #Changing whole image with user defined RGB values
    img[:]=[b,g,r]

    #Making the Image to display
    cv2.imshow("Pallete",img)

    #Breaking the process while pressing ESC key
    key=cv2.waitKey(1)&0xFF
    if(key==27):
        break

    #My IPython Window is not Responding and gets strucked

person Sundara Moorthy Anandh    schedule 20.07.2017    source источник
comment
Дисплеи OpenCV не очень хорошо работают с Jupyter/IPython. Вместо этого я бы предложил использовать Matplotlib для отображения изображений. Обратите внимание, что Matplotlib отображает изображения в формате RGB, а не в порядке BGR.   -  person alkasm    schedule 20.07.2017
comment
Он работал для предыдущих кодов Python, но с трудом открывается только для этой программы. Это моя проблема. Есть ли ошибка в коде? или нужны изменения? @Александр Рейнольдс   -  person Sundara Moorthy Anandh    schedule 20.07.2017
comment
waitKey(1) нарисует изображение, и цикл начнется снова, и это дает вам крошечное окно в 1 мс, чтобы нажать клавишу, прежде чем он решит двигаться дальше. Используйте более длительное время. Просто используйте waitKey(0), чтобы бесконечно ждать нажатия клавиши.   -  person alkasm    schedule 20.07.2017
comment
Ууууууууу! Это работает намного красивее. Спасибо :)   -  person Sundara Moorthy Anandh    schedule 20.07.2017
comment
Но значение моего ключа всегда равно 255, даже если я нажимаю разные клавиши! Почему?   -  person Sundara Moorthy Anandh    schedule 20.07.2017
comment
Это другой вопрос. Во-первых, прочитайте это. Затем опубликуйте свой код, который дает вам результат 255 при каждом нажатии клавиши.   -  person alkasm    schedule 20.07.2017
comment
Я знаю, что «cv2.waitKey(0) & 0xFF == ord(any_key)» будет ждать нажатия конкретной клавиши и выполнения следующих операций. Но мой вопрос заключается в том, что значение, хранящееся в переменной, всегда равно 255!   -  person Sundara Moorthy Anandh    schedule 20.07.2017
comment
key=cv2.waitKey(0)&0xFF print('key:',key) if(key in range(0,127)): break   -  person Sundara Moorthy Anandh    schedule 20.07.2017
comment
Я не знаю, это может быть что-то с Юпитером. Попробуйте удалить побитовую операцию. В противном случае, может быть, вы можете просто использовать waitKey(0), а не хранить и проверять?   -  person alkasm    schedule 20.07.2017