Advertisement
Guest User

rozmiar okna

a guest
Jul 19th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.70 KB | None | 0 0
  1. import wx
  2. import cv2
  3. import numpy as np
  4.  
  5. class VideoFrame(wx.Frame):
  6.        
  7.     def __init__(self, parent, id):
  8.         wx.Frame.__init__(self, parent, id, 'CLIPER 1.0')
  9.         #size=(640,360)
  10.         self.CreateStatusBar()
  11.         menubar=wx.MenuBar()
  12.         filem=wx.Menu()
  13.         effects = wx.Menu()
  14.         help = wx.Menu()
  15.         info = wx.Menu()
  16.        
  17.        
  18.         vframe = wx.Frame(self,-1, style=wx.SUNKEN_BORDER)
  19.         vframe.SetBackgroundColour("BLUE")
  20.        
  21.         box = wx.BoxSizer(wx.VERTICAL)
  22.         box = wx.BoxSizer(wx.HORIZONTAL)
  23.         box.Add(vframe, 1, wx.EXPAND)
  24.        
  25.         self.SetAutoLayout(True)
  26.         self.SetSizer(box)
  27.         self.Layout()
  28.        
  29.        
  30.         menubar.Append(filem, '&Plik')
  31.         menubar.Append(effects, '&Efekty')
  32.         menubar.Append(info, 'Twórcy')
  33.         menubar.Append(help, 'Pomoc')
  34.        
  35.         filem.Append(wx.NewId(), "Nowe Okno", "This is a new window")
  36.         filem.Append(wx.NewId(), '&Otwórz', 'Otwórz plik')
  37.         filem.Append(wx.NewId(), 'Zapisz', 'Zapisz film')
  38.         filem.AppendSeparator()
  39.         menuExit = filem.Append(wx.ID_EXIT, '&Zamknij', 'Zamknij aplikacje')
  40.         self.Bind(wx.EVT_CLOSE, self.OnClose, menuExit)
  41.        
  42.         effects.Append(wx.ID_ANY, '&Czarno-biały', 'Filtr czarno-biały')
  43.         effects.Append(wx.ID_ANY, '&Sepia', 'Filtr sepii')
  44.         effects.Append(wx.ID_ANY, '&Erozja', 'Efekt erozji')
  45.         effects.Append(wx.ID_ANY, '&Rozmycie', 'Efekt rozmycia')
  46.         info.Append(wx.ID_ABOUT, 'Autor', 'Informacje o autorze aplikacji')
  47.        
  48.         self.SetMenuBar(menubar)
  49.                
  50.     def OnClose(self, event):
  51.  
  52.         if event.VideoFrame():
  53.  
  54.           if wx.MessageBox("The file has not been saved... continue closing?",
  55.                          "Please confirm",
  56.                          wx.ICON_QUESTION | wx.YES_NO) != wx.YES:
  57.  
  58.               event.VideoFrame()
  59.               return
  60.         self.Quit()
  61.         self.Destroy()  # you may also do:  event.Skip()
  62.                     # since the default event handler does call Destroy(), too
  63.        
  64.  
  65. class ShowCapture(wx.Panel):
  66.     def __init__(self, parent, capture, fps=23.97, size=(640,360)):
  67.         wx.Panel.__init__(self, parent)  
  68.        
  69.         self.capture = capture
  70.         ret, frame = self.capture.read()
  71.        
  72.         height, width = frame.shape[:2]
  73.         parent.SetSize((width, height))
  74.         frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
  75.  
  76.         self.bmp = wx.BitmapFromBuffer(width, height, frame)
  77.         self.timer = wx.Timer(self)
  78.         self.timer.Start(1000./fps)
  79.  
  80.         self.Bind(wx.EVT_PAINT, self.OnPaint)
  81.         self.Bind(wx.EVT_TIMER, self.NextFrame)
  82.  
  83.     def OnPaint(self, evt):
  84.         dc = wx.BufferedPaintDC(self)
  85.         dc.DrawBitmap(self.bmp, 0, 0)
  86.  
  87.     def NextFrame(self, event):
  88.         ret, frame = self.capture.read()
  89.         if ret:
  90.             frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
  91.             tryb = 0 # 0 - kolor; 1 - czarno białe; 2 - sepia 3 - erozja 4 - rozmycie
  92.             new_frame = np.zeros((200, 200))
  93.  
  94.             key = cv2.waitKey(0)
  95.  
  96.             if key == ord('q'):
  97.                 self.Quit()
  98.             elif key == ord('x'): # koloroweqq
  99.                 tryb = 0
  100.             elif key == ord('c'): # czarno białe        
  101.                 tryb = 1
  102.             elif key == ord('v'): # sepia
  103.                 tryb = 2
  104.             elif key == ord('b'): # erozja
  105.                 tryb = 3
  106.             elif key == ord('n'): # rozmycie gaussowskie    
  107.                 tryb = 4
  108.            
  109.             if tryb == 0: # kolorowe
  110.                 new_frame = frame
  111.             elif tryb == 1: # czarno białe
  112.                 new_frame = cv2.cvtColor(cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY), cv2.COLOR_GRAY2BGR)
  113.             elif tryb == 2: # sepia
  114.                 kernel = np.asarray([0.272, 0.534, 0.131, 0.349, 0.686, 0.168, 0.393, 0.769, 0.189]).reshape(3, 3)
  115.                 new_frame = cv2.transform(frame, kernel)
  116.             elif tryb == 3: #erozja
  117.                 kernel = np.ones((5,5), np.uint8)
  118.                 new_frame = cv2.erode(frame, kernel, iterations=1)
  119.             elif tryb == 4: #rozmycie
  120.                 new_frame = cv2.GaussianBlur(frame,(5,5),0)
  121.            
  122.             self.bmp.CopyFromBuffer(frame)
  123.             self.Refresh()
  124.  
  125. capture = cv2.VideoCapture("sample1.mp4")
  126. width = capture.get(cv2.CAP_PROP_FRAME_WIDTH)
  127. height = capture.get(cv2.CAP_PROP_FRAME_HEIGHT)
  128. capture.set(cv2.CAP_PROP_FRAME_WIDTH, width)
  129. capture.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
  130.  
  131.  
  132. app = wx.App()
  133. frame = VideoFrame(parent=None, id=-1)
  134. cap = ShowCapture(frame, capture)
  135. frame.Show()
  136. app.MainLoop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement