#打开视频
def video_on( self, event ):
self.output=1
self.pause1=0
if self.CAMERA_STYLE == True :# 释放摄像头资源
# 弹出关闭摄像头提示窗口
dlg = wx.MessageDialog(None, u'确定要关闭摄像头?', u'操作提示', wx.YES_NO | wx.ICON_QUESTION)
if(dlg.ShowModal() == wx.ID_YES):
self.cap.release()#释放摄像头
self.bmp.SetBitmap(wx.Bitmap(self.image_cover))#封面
dlg.Destroy()#取消弹窗
# 选择文件夹对话框窗口
dialog = wx.FileDialog(self,u"选择视频检测",os.getcwd(),'',wildcard="(*.mp4)|*.mp4",style=wx.FD_OPEN | wx.FD_CHANGE_DIR)
if dialog.ShowModal() == wx.ID_OK:
# 如果确定了选择的文件夹,将文件夹路径写到m_textCtrl3控件
self.m_textCtrl3.SetValue(u"文件路径:"+dialog.GetPath()+"\n")
self.VIDEO_STREAM = str(dialog.GetPath())# 更新全局变量路径
# dialog.Destroy
self.cap = cv2.VideoCapture(dialog.GetPath())
# 成功打开视频,循环读取视频流
while(self.cap.isOpened()):
flag,im_rd = self.cap.read()
# opencv中imread的图片内部是BGR排序,wxPython的StaticBitmap需要的图片是RGB排序,不转换会出现颜色变化
#获得高和宽
height, width = im_rd.shape[:2]
image1 = cv2.cvtColor(im_rd, cv2.COLOR_BGR2RGB)
pic = wx.Bitmap.FromBuffer(width,height,image1)
# 显示图片在画布上:
self.bmp.SetBitmap(pic)
# 释放摄像头
self.cap.release()
其中height, width = im_rd.shape[:2]这句报错,但是视频能够在GUI中正常显示