win.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from PyQt5.QtWidgets import QDialog
  2. from PyQt5.QtGui import QImage,QPixmap
  3. from ui.traffic_ui import Ui_renwu
  4. from dev.camera import CameraDev #dev 路径名 camera 函数名
  5. class Win(QDialog): #扩展QDialog(新增,覆盖功能)
  6. def __init__(self): #实现构造器(完成初始化,数据初始化,功能初始化)
  7. super(Win,self).__init__() #调用父类构造器
  8. #调用ui
  9. #创建对象
  10. self.ui = Ui_renwu()
  11. #关联Ui到当前窗体
  12. self.ui.setupUi(self)
  13. #创建一个设备对象
  14. self.dev = CameraDev()
  15. #启动设备线程工作
  16. self.dev.start()
  17. #绑定信号与槽
  18. self.dev.signal_video.connect(self.showVideo)
  19. #定义槽(slot)函数 (Qt技术:信号与槽),一定与信号同型
  20. def showVideo(self,data,h,w,c):
  21. #print("(",h,",",w,",",c,")") #python 格式字符串
  22. #1. 使用data h,w c创建
  23. q_img = QImage(
  24. data, #图像字节数组
  25. w, #图像宽度
  26. h, #图像高度
  27. w*c, #图像每行字节数
  28. QImage.Format_BGR888 #图像格式BGR 每个通道8个bit 1个字节
  29. ) #图片格式是bgr
  30. # 2.使用QPixmage创建QPixmap
  31. pix_img = QPixmap.fromImage(q_img)
  32. #3. 显示QLable 创建self.lblvideo
  33. self.ui.lblvideo.setPixmap(pix_img)
  34. # 4.适当的缩放
  35. self.ui.lblvideo.setScaledContents(True)