window 用于显示摄像头画面的 GUI 出错
Error in window GUI for displaying camera feed
我正在编写一个 window 图形用户界面来显示来自我的相机的提要。
但是,我一直收到此错误。
**stream
im_pil = Image.fromarray(im_rgb)
NameError: name 'Image' is not defined
我尝试导入图片,但没有用。有谁知道出了什么问题?
这是我的代码:
import tkinter as tk
import cv2
from PIL import Image
window = tk.Tk()
window.title('Video Stream')
main = tk.Frame(window, bg="white")
main.grid()
video = tk.Label(main)
video.grid()
window.bind('<Escape>', lambda event: window.destroy())
status, frame = 0, []
cap = cv2.VideoCapture(0)
def stream():
global status, frame
status, frame = cap.read()
# 如果有影像的話
if status:
# 將 OpenCV 色改格式 ( BGR ) 轉換成 RGB
im_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
# 將 OpenCV 圖檔轉換成 PIL
im_pil = Image.fromarray(im_rgb)
# 轉換成 ImageTK
imgTK = ImageTk.PhotoImage(image=im_pil)
# 放入圖片
video.configure(image=imgTK)
# 防止圖片丟失,做二次確認
video.image = imgTK
# 10 豪秒 後執行 stream 函式,這裡是模擬 While 迴圈的部分
window.after(10, stream)
stream()
window.mainloop()
cap.release()
cv2.destroyAllWindows()
按如下方式更改有问题的行:
imgTK = ImageTk.PhotoImage(im_pil)
我正在编写一个 window 图形用户界面来显示来自我的相机的提要。 但是,我一直收到此错误。
**stream
im_pil = Image.fromarray(im_rgb)
NameError: name 'Image' is not defined
我尝试导入图片,但没有用。有谁知道出了什么问题? 这是我的代码:
import tkinter as tk
import cv2
from PIL import Image
window = tk.Tk()
window.title('Video Stream')
main = tk.Frame(window, bg="white")
main.grid()
video = tk.Label(main)
video.grid()
window.bind('<Escape>', lambda event: window.destroy())
status, frame = 0, []
cap = cv2.VideoCapture(0)
def stream():
global status, frame
status, frame = cap.read()
# 如果有影像的話
if status:
# 將 OpenCV 色改格式 ( BGR ) 轉換成 RGB
im_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
# 將 OpenCV 圖檔轉換成 PIL
im_pil = Image.fromarray(im_rgb)
# 轉換成 ImageTK
imgTK = ImageTk.PhotoImage(image=im_pil)
# 放入圖片
video.configure(image=imgTK)
# 防止圖片丟失,做二次確認
video.image = imgTK
# 10 豪秒 後執行 stream 函式,這裡是模擬 While 迴圈的部分
window.after(10, stream)
stream()
window.mainloop()
cap.release()
cv2.destroyAllWindows()
按如下方式更改有问题的行:
imgTK = ImageTk.PhotoImage(im_pil)