• OpenMV VSCode 扩展发布了,在插件市场直接搜索OpenMV就可以安装
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 用pyqt做的图传连接到ip会卡住,用游览器连接到ip就是正常的



    • 虽然不知道能不能在论坛问pyqt的问题,但是我实在是找不到可以问的地方了。
      我用pyqt做的图传连接mjpeg_streamer_ap 热点这个例程创建的ip(也就是192.168.1.1:8080),但是程序就会直接卡死。

      import sys
      from PyQt5.QtWidgets import QApplication, QWidget, QLabel
      from PyQt5.QtGui import QPixmap, QImage
      from PyQt5.QtCore import Qt
      import socket
      import numpy as np
      import struct
      import pickle
      
      class Client(QWidget):
          def __init__(self):
              super().__init__()
              self.initUI()
      
          def initUI(self):
              self.setGeometry(100, 100, 640, 480)
              self.setWindowTitle('TCP Client')
      
              self.label = QLabel(self)
              self.label.setAlignment(Qt.AlignCenter)
              self.label.setGeometry(0, 0, 640, 480)
      
              self.show()
      
              # create a socket object
              self.client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
      
              # get local machine name
              host = '192.168.1.1'
      
              port = 8080
      
              # connection to hostname on the port.
              self.client_socket.connect((host, port))
      
              # receive data from the server
              data = b''
              payload_size = struct.calcsize("L")
              while True:
                  while len(data) < payload_size:
                      data += self.client_socket.recv(4096)
                  packed_msg_size = data[:payload_size]
                  data = data[payload_size:]
                  msg_size = struct.unpack("L", packed_msg_size)[0]
                  while len(data) < msg_size:
                      data += self.client_socket.recv(4096)
                  frame_data = data[:msg_size]
                  data = data[msg_size:]
                  frame = pickle.loads(frame_data, fix_imports=True, encoding="bytes")
                  frame = np.array(frame, dtype=np.uint8).reshape((480, 640))
                  h, w = frame.shape
                  bytesPerLine = w
                  convertToQtFormat = QImage(frame.data, w, h, bytesPerLine, QImage.Format_Grayscale8)
                  p = QPixmap.fromImage(convertToQtFormat)
                  self.label.setPixmap(p)
      
      if __name__ == '__main__':
          app = QApplication(sys.argv)
          client = Client()
          sys.exit(app.exec_())
      
      
      

      只要能告诉我做下去的方向和方法就可以,我真的在其他地方找不到可以解决的办法了



    • 你看看OpenMV上的代码是什么,估计是mjpeg。mjpeg的协议是一个长连接,multipart发送,所以没有一个完整的http连接。
      你可以用下面的代码。每个请求只传输一张图片。然后你在qt里每秒访问5次就行了。
      https://book.openmv.cc/MCU/wifi.html#只传输一张图片