У меня есть требование отображать выбранные видеокадры с помощью wx.ClientDC при каждом нажатии кнопки. Код, который я написал, обнаруживает нажатие кнопки и зацикливается, считывая кадры, но не отображает его. Я читаю фреймы, используя OpenCV. Я не могу определить, где я иду не так.
class VideoFrame(gui.wxVideoFrame):
def __init__(self, parent):
self.parent = parent
gui.wxVideoFrame.__init__(self, parent)
self.webcam = WebcamFeed() #opencv Webcam class to feed frames.
if not self.webcam.has_webcam():
print ('Webcam has not been detected.')
self.Close()
self.STATE_RUNNING = 1
self.STATE_CLOSING = 2
self.state = self.STATE_RUNNING
self.SetSize(wx.Size(1280, 720))
self.dc = wx.ClientDC(self.panel)
self.verify.Bind(wx.EVT_BUTTON, self.onVerify) #the button
self.Bind(wx.EVT_CLOSE, self.onClose)
def onClose(self, event):
if not self.state == self.STATE_CLOSING:
self.state = self.STATE_CLOSING
self.Destroy()
def onVerify(self, event):
#self.verify.Enable(True)
#i = 0
while i<= 100:
frame = self.webcam.get_image()#reads image successfully
image = wx.Bitmap.FromBuffer(640, 480, frame)
self.dc.Clear()
self.dc.DrawBitmap(image, 0, 0)
#i += 1
#print(i)
def onEraseBackground(self, event):
return