pythonwx+opencv+kociemba实现魔方还原
窗口程序(cube_desktop.py)
import wx
import cv2
import colordetect as cd
import colordraw
class CubeFrame(wx.Frame):
def __init__(self,*args,**kwargs):
super(CubeFrame,self).__init__(*args,**kwargs)
self.SetClientSize(600,680)
self.SetMaxSize((600,680))
self.SetMinSize((600,680))
self.Bind(wx.EVT_IDLE,self.onIDLE)
self.panel = wx.Panel(self, wx.ID_ANY)
labelOne = wx.StaticText(self.panel, wx.ID_ANY, '机器人串口:')
inputTxtOne = wx.TextCtrl(self.panel, wx.ID_ANY, 'COM3')
labelTwo = wx.StaticText(self.panel, wx.ID_ANY, '摄像头串口:')
inputTxtTwo = wx.TextCtrl(self.panel, wx.ID_ANY, '0')
self.Bind(wx.EVT_TEXT,self.onCOM1,inputTxtOne)
self.Bind(wx.EVT_TEXT, self.onCOM2, inputTxtTwo)
self.cap=None
self.index = 0
self.COM2=0
self.COM1="COM3"
self.names=["up.jpg","down.jpg","left.jpg","right.jpg","front.jpg","back.jpg"]
labelThree = wx.StaticText(self.panel, wx.ID_ANY, '魔方:')
choice=wx.Choice(self.panel,choices=["上面","下面","左面","右面","前面","后面"])
choice.SetSelection(self.index)
self.Bind(wx.EVT_CHOICE,self.onChoice,choice)
self.cameraBtn = wx.Button(self.panel, wx.ID_ANY, '拍照保存')
self.cubeBtn = wx.Button(self.panel, wx.ID_ANY, '魔方还原')
openBtn = wx.Button(self.panel, wx.ID_ANY, '打开摄像头')
self.cameraBtn.Disable()
self.Bind(wx.EVT_BUTTON, self.onCamera, self.cameraBtn)
self.Bind(wx.EVT_BUTTON, self.onCube, self.cubeBtn)
self.Bind(wx.EVT_BUTTON,self.onOpen,openBtn)
self.pic=wx.StaticBitmap(self.panel)
self.pic.SetSize((600,500))
img=wx.Bitmap()
img.Create(600,500)
self.pic.SetBitmap(img)
topSizer = wx.BoxSizer(wx.VERTICAL)
inputOneSizer = wx.BoxSizer(wx.HORIZONTAL)
btnSizer = wx.BoxSizer(wx.HORIZONTAL)
inputOneSizer.Add(labelOne, 0, wx.ALL, 5)
inputOneSizer.Add(inputTxtOne, 1, wx.ALL | wx.EXPAND, 5)
inputOneSizer.Add(labelTwo, 0, wx.ALL, 5)
inputOneSizer.Add(inputTxtTwo, 1, wx.ALL | wx.EXPAND, 5)
inputOneSizer.Add(labelThree, 0, wx.ALL | wx.EXPAND, 5)
inputOneSizer.Add(choice, 1, wx.ALL | wx.EXPAND, 5)
btnSizer.Add(openBtn, 0, wx.ALL, 5)
btnSizer.Add(self.cameraBtn, 0, wx.ALL, 5)
btnSizer.Add(self.cubeBtn, 0, wx.ALL, 5)
topSizer.Add(inputOneSizer, 0, wx.ALL | wx.EXPAND, 5)
topSizer.Add(wx.StaticLine(se