누군가가 카메라를 볼 수 없도록 주석 처리 된 코드를 수정 한 이유를 설명 할 수 있습니까? 나는 x.update_video 방법에서 오류 메시지포장 된 Tkinter 캔버스에 카메라를 사용하는 방법 (opencv) [해결]
" self.a = Image.fromarray(self.capture)#PIL 1.6# AttributeError: class Image has no attribute 'fromarray'"
를 얻을. 토픽의 코드는 OpenCV (cv2 in Python) VideoCapture not releasing camera after deletion 입니다. 저는 Tkinter를 매우 신중하게 사용하고 있으며 튜토리얼에서 도움이되지 않았습니다. 캔버스뿐만 아니라 프레임도 포장되어 있다고 생각합니다. 당신이 그런 방법이없는 클래스 fromarray
를 호출하려는 :하지만
class App:
def __init__(self, master,cam):
## root = tk.Tk()
## videoframe = tk.LabelFrame(root,text='Captured video')
## videoframe.grid(column=0,row=0,columnspan=1,rowspan=1,padx=5, pady=5, ipadx=5, ipady=5)
## canvas = tk.Canvas(videoframe, width=640,height=480)
## canvas.grid(column=0,row=0)
## cam = cv2.VideoCapture(2)
## x = vid(cam,root,canvas)
## root.after(0,x.update_video)
## button = tk.Button(text='Quit',master=videoframe,command=root.destroy)
## button.grid(column=0,row=1)
## root.mainloop()
## del cam
frame = LabelFrame(master,text='Captured video')
frame.pack()
canvas = Canvas(frame, width=640,height=480)
canvas.pack(side=TOP)
x = vid(cam,master,canvas)
master.after(0,x.update_video)
self.button = Button(frame, text="QUIT", fg="red", command=master.destroy)
self.button.pack(side=LEFT)
self.hi_there = Button(frame, text="Hello", command=self.say_hi)
self.hi_there.pack(side=LEFT)
def say_hi(self):
print "hi there, everyone!"
root = Tk()
cam = cv2.VideoCapture(0)
app = App(root,cam)
root.mainloop()
del cam
그래서 마침내 알아 냈습니다. –
예 문제가 해결되었습니다. –