下面的示例代码在OS
X上对我来说很好用,但是跨平台使用wx令我有些惊讶。它几乎是相同的代码,不同之处
cvtColor在于重新分配了from的结果,并添加了
wx.Panel(是重要部分)的子类。
import wx import cv, cv2 class ShowCapture(wx.Panel): def __init__(self, parent, capture, fps=15): wx.Panel.__init__(self, parent) self.capture = capture ret, frame = self.capture.read() height, width = frame.shape[:2] parent.SetSize((width, height)) frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) self.bmp = wx.BitmapFromBuffer(width, height, frame) self.timer = wx.Timer(self) self.timer.Start(1000./fps) self.Bind(wx.EVT_PAINT, self.OnPaint) self.Bind(wx.EVT_TIMER, self.Nextframe) def onPaint(self, evt): dc = wx.BufferedPaintDC(self) dc.DrawBitmap(self.bmp, 0, 0) def Nextframe(self, event): ret, frame = self.capture.read() if ret: frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) self.bmp.CopyFromBuffer(frame) self.Refresh() capture = cv2.VideoCapture(0) capture.set(cv.CV_CAP_PROP_frame_WIDTH, 320) capture.set(cv.CV_CAP_PROP_frame_HEIGHT, 240) app = wx.App() frame = wx.frame(None) cap = ShowCapture(frame, capture) frame.Show() app.MainLoop()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)