OpenCV 4 with Python Blueprints
上QQ阅读APP看书,第一时间看更新

Learning about a basic GUI layout

The most basic layout consists of only a large black panel that provides enough room to display the video feed:

        self.video_pnl = wx.Panel(self, size=(self.imgWidth, self.imgHeight))
self.video_pnl.SetBackgroundColour(wx.BLACK)

In order for the layout to be extendable, we add it to a vertically arranged wx.BoxSizer object:

        # display the button layout beneath the video stream
self.panels_vertical = wx.BoxSizer(wx.VERTICAL)
self.panels_vertical.Add(self.video_pnl, 1, flag=wx.EXPAND | wx.TOP,
border=1)

Next, we specify an abstract method, augment_layout, for which we will not fill in any code. Instead, any user of our base class can make their own custom modifications to the basic layout:

        self.augment_layout()

Then, we just need to set the minimum size of the resulting layout and center it:

        self.SetMinSize((self.imgWidth, self.imgHeight))
self.SetSizer(self.panels_vertical)
self.Centre()

The next section shows you how to handle video streams.