0

コメントアウトされたコードを変更した後、カメラビューがなくなった理由を誰かが説明してもらえますか? エラーメッセージが表示されます

" self.a = Image.fromarray(self.capture)#PIL 1.6# AttributeError: class Image には属性 'fromarray' がありません"

x.update_video メソッドから。コメント付きのコードは、トピックOpenCV (Python では cv2) VideoCapture が削除後にカメラを解放しない ことからのものです。キャンバスだけでなく額縁も詰め込まれているからだと思います。でも何か解決策はあるはず…

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
4

3 に答える 3

1

エラー メッセージは、問題が何であるかを正確に示していますfromarray。そのようなメソッドを持たないクラスを呼び出そうとしています。それはおそらくImage、それがあなたが思っているものではないことを意味するので、正確に何Imageであるか、そしてそれがメソッドを持っているはずかどうかを自分で確認することから始めてくださいfromarray.

于 2013-06-12T18:04:26.253 に答える
0

私の画像はカメラからのキャプチャです。

 def update_video(self):
        (self.readsuccessful,self.f) = self.cam.read()
        self.capture = cv2.cvtColor(self.f, cv2.COLOR_RGB2RGBA) #cv2.COLOR_RGB2GRAY)
        self.a = Image.fromarray(self.capture)#nowe w PIL 1.6 #PIL.Image.VERSION=1.1.7
        self.b = ImageTk.PhotoImage(image=self.a) ...

コメント付きバージョンで動作します。まだ十分に文書化されていませんが、Image クラスには fromarray メソッドがあります。

于 2013-06-13T06:37:21.140 に答える