logo
Loading...

按下esc後無法關閉視窗? - Cupoy

我是 macpython 3.7while True:    cv2.imshow('change ...

按下esc後無法關閉視窗?

2019/11/28 下午 05:43
電腦視覺深度學習討論版
Eric Lin
觀看數:93
回答數:2
收藏數:1

我是 mac

python 3.7

while True:

    cv2.imshow('change saturation', img_hsv_change)

    

    k = cv2.waitKey(0)

    if k == 27:

        cv2.destroyAllWindows()

        break

每次按下esc後會當掉 有人跟我一樣嗎?

回答列表

  • 2019/11/28 下午 09:10
    Jeffrey
    贊同數:0
    不贊同數:0
    留言數:2

    是的, 會有這種現象, 解決方式:

    1. 在image.show 之前, 加上" cv2.startWindowThread()" , 會用一個thread去標記要關掉的windows

    2. 圖像出現後必須把光標移動到窗口上再按鍵才會退出

    3. destroyWindow(), 關閉image.show 的窗口

  • 2019/12/03 下午 04:26
    Pei-Yi Lin
    贊同數:2
    不贊同數:0
    留言數:0

    基本上我也有遇到一樣的問題 

    使用mac  


    我發現可能跟jupyter有關 

    因為如果直接寫成py檔用自己的環境執行(直接python3或是使用vscode之類的)是可以成功關掉的  


    但是如果是使用jupyter

    即使加上cv2.startWindowThread()和destroyWindow()或是destroyWindow()後面加入waitkey(1)都無法(還有些解法是說要連續好多個waitkey(1)) 

    https://stackoverflow.com/questions/6116564/destroywindow-does-not-close-window-on-mac-using-python-and-opencv  


    最後我只能選擇用 

    plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) 

    plt.show() 

    來顯示圖片 

    不然每次都會當掉 

    然後jupyter的kernal都要重跑


    ps, 目前不知道使用plt的話會不會對之後的作業有影響, 但目前就先用這方法解決顯示圖片的問題