logo
Loading...

使用opencv關圖的時候就會當掉,彈出視窗顯示" The kernel appears to have died. It will restart automatically." - Cupoy

執行 Day 1 範例程式彈出畫面要按 ESC 關圖的時候畫面就會卡住,一直轉圈圈假如強制關掉圖片,...

cvdl-2

使用opencv關圖的時候就會當掉,彈出視窗顯示" The kernel appears to have died. It will restart automatically."

2020/02/26 下午 11:36
電腦視覺深度學習討論版
壯士
觀看數:187
回答數:1
收藏數:1
cvdl-2

執行 Day 1 範例程式彈出畫面要按 ESC 關圖的時候

畫面就會卡住,一直轉圈圈

假如強制關掉圖片,就會出現以下視窗

目前使用的 opencv-python 版本是 4.1.2

之前安裝最新版的 opencv,kernel 會壞掉無法執行,

彈出視窗顯示" The kernel appears to have died. It will restart automatically."


查到網路上有人建議裝回舊版本,

因此重新安裝回較舊的版本,

現在雖然可以執行程式也可以開圖了,

但是關圖的時候就會當掉。

不知道為什麼會發生這種狀況...

網路上也找不到可以解決的方法。

回答列表

  • 2020/02/27 上午 10:04
    杜靖愷
    贊同數:0
    不贊同數:0
    留言數:0

    Hi,請問你是使用 Mac 嗎? 如果是的話可以參考https://stackoverflow.com/questions/46348972/cv2-imshow-crashes-on-mac 建議可以簡單先試一下把 `k == 27` 改成 `k == ord('q')`,然後在圖片視窗按 `q` 先解釋一下,範例中的 `k = waitKey(0); k == 27` 是 opencv 實現方法使然,`cv2.imshow` 必須要跟著一行 `cv2.waitKey` 等待用戶觸發事件,可參考[ opencv 官方文檔](https://docs.opencv.org/master/d7/dfc/group__highgui.html#ga453d42fe4cb60e5723281a89973ee563),主要有兩種邏輯 `cv2.waitKey(0)` 表示會無限制的等待 user 觸發 keyboard event (鍵盤上任意一個按鍵都可以),按了 keyboard 的某個按鍵之後會回傳一個數值,而 ESC 的回傳值正是 ASCII 码對應的 27,所以範例才會用 `k == 27`,但不代表一定要這樣寫,stackoverflow 上建議的 `ord('q')` 就是按了 q 之後回傳的值,如果你喜歡按空白鍵的話,也可以用 `ord(' ')` `cv2.waitKey(n) # where n > 0` 表示的是電腦會等待 n 毫秒才繼續執行下一行程式碼,n 毫秒結束後,如果超過時間 user 沒有觸發任何 keyboard event,則回傳 -1 (至少 windows 是啦,只要 print(k) 出來就能知道了),有觸發就和上面一樣了。 `cv2.imshow` 主要是用來觀察及確認圖像處理的結果,如果只是為了顯示的話,也可以試看其他顯示方法,比如 PIL ``` from PIL import Image Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) ```