小编Rog*_*r.C的帖子

wxpython 显示网络摄像头视频时出现闪烁

我是Python新手。我正在尝试编写一个运动检测应用程序。目前,我正在尝试让网络摄像头视频显示在屏幕上。目前的代码一开始没有闪烁,但在调整大小后,闪烁将会回来。有什么线索吗?另外,为什么它在计时器事件中没有 self.Refresh() 的情况下不起作用,除非框架最小化,否则绘制事件不是总是发生?提前致谢。

import wx
import cv

class LiveFrame(wx.Frame):

  fps = 30


  def __init__(self, parent):
    wx.Frame.__init__(self, parent, -1, title="Live Camera Feed")

    self.SetDoubleBuffered(True)
    self.capture = None
    self.bmp = None
    #self.displayPanel = wx.Panel(self,-1)

    #set up camaera init
    self.capture = cv.CaptureFromCAM(0)
    frame = cv.QueryFrame(self.capture)
    if frame:
      cv.CvtColor(frame,frame,cv.CV_BGR2RGB)
      self.bmp = wx.BitmapFromBuffer(frame.width,frame.height,frame.tostring())
      self.SetSize((frame.width,frame.height))
    self.displayPanel = wx.Panel(self,-1)

    self.fpstimer = wx.Timer(self)
    self.fpstimer.Start(1000/self.fps)
    self.Bind(wx.EVT_TIMER, self.onNextFrame, self.fpstimer)
    self.Bind(wx.EVT_PAINT, self.onPaint)

    self.Show(True)

  def updateVideo(self):
    frame = cv.QueryFrame(self.capture)
    if frame:
      cv.CvtColor(frame,frame,cv.CV_BGR2RGB)
      self.bmp.CopyFromBuffer(frame.tostring())
      self.Refresh()


  def onNextFrame(self,evt):
    self.updateVideo()
    #self.Refresh()
    evt.Skip()

  def onPaint(self,evt):
    #if self.bmp: …
Run Code Online (Sandbox Code Playgroud)

python webcam opencv wxpython

3
推荐指数
1
解决办法
2619
查看次数

标签 统计

opencv ×1

python ×1

webcam ×1

wxpython ×1