syfei0518
2021-09-25 13:30
采纳率: 76.9%
浏览 291

报错:'NoneType' object has no attribute 'shape'


#打开视频
    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中正常显示

2条回答 默认 最新

相关推荐 更多相似问题