导航

    • 登录
    • 搜索
    • 版块
    • 产品
    • 教程
    • 论坛
    • 淘宝
    1. 主页
    2. xr1w
    X
    • 举报资料
    • 资料
    • 关注
    • 粉丝
    • 屏蔽
    • 帖子
    • 楼层
    • 最佳
    • 群组

    xr1w

    @xr1w

    0
    声望
    11
    楼层
    441
    资料浏览
    0
    粉丝
    0
    关注
    注册时间 最后登录

    xr1w 关注

    xr1w 发布的帖子

    • RE: 这个Capture Failed:-4是由什么导致的

      @kidswong999 您看看这是个什么错误

      发布在 OpenMV Cam
      X
      xr1w
    • 'int' object isn't subscriptable是什么问题

      'int' object isn't subscriptable是什么问题
      0_1597405443084_xxx.png

      import sensor, image, time
      from image import SEARCH_EX, SEARCH_DS
      
      from pid import PID
      from pyb import Servo
      
      pan_servo=Servo(1)
      tilt_servo=Servo(2)
      
      red_threshold  = (13, 49, 18, 61, 6, 47)
      
      pan_pid = PID(p=0.07, i=0, imax=90) #脱机运行或者禁用图像传输,使用这个PID
      tilt_pid = PID(p=0.05, i=0, imax=90) #脱机运行或者禁用图像传输,使用这个PID
      #pan_pid = PID(p=0.1, i=0, imax=90)#在线调试使用这个PID
      #tilt_pid = PID(p=0.1, i=0, imax=90)#在线调试使用这个PID
      
      sensor.reset() # Initialize the camera sensor.
      sensor.set_contrast(1)
      sensor.set_gainceiling(16)
      sensor.set_pixformat(sensor.GRAYSCALE)
      sensor.set_framesize(sensor.QQVGA) # use QQVGA for speed.
      sensor.skip_frames(10) # Let new settings take affect.
      sensor.set_auto_whitebal(False) # turn this off.
      
      template = image.Image("/2.pgm")
      
      clock = time.clock() # Tracks FPS.
      
      def find_max(blobs):
          max_size=0
          for blob in blobs:
              if blob[2]*blob[3] > max_size:
                  max_blob=blob
                  max_size = blob[2]*blob[3]
          return max_blob
      
      
      while(True):
          clock.tick() # Track elapsed milliseconds between snapshots().
          img = sensor.snapshot() # Take a picture and return the image.
      
          blobs = img.find_template(template, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
          if blobs:
              max_blob = find_max(blobs)
              pan_error = max_blob[0]+max_blob[2]/2-img.width()/2
              tilt_error = max_blob[1]+max_blob[3]/2-img.height()/2
      
              print("pan_error: ", pan_error)
      
              img.draw_rectangle(r)(max_blob)
      
              pan_output=pan_pid.get_pid(pan_error,1)/2
              tilt_output=tilt_pid.get_pid(tilt_error,1)
              print("pan_output",pan_output)
              pan_servo.angle(pan_servo.angle()+pan_output)
              tilt_servo.angle(tilt_servo.angle()-tilt_output)
      
      
      发布在 OpenMV Cam
      X
      xr1w
    • RE: 这个Capture Failed:-4是由什么导致的

      运行几分钟他就出问题了

      发布在 OpenMV Cam
      X
      xr1w
    • RE: 这个Capture Failed:-4是由什么导致的

      这个可以测试

      import sensor, image, mjpeg, pyb, network, usocket, sys
      import time
      
      
      SSID ='OPENMV_AP'    # Network SSID
      KEY  ='1234567890'   # wifi密码(必须为10字符)
      HOST = ''           # 使用第一个可用的端口
      PORT = 8080         # 任意非特权端口
      
      
      from pid import PID
      from pyb import Servo
      from pyb import Pin
      pan_servo=Servo(1)
      tilt_servo=Servo(2)
      red_threshold  = (13, 49, 18, 61, 6, 47)
      pan_pid = PID(p=0.07, i=0, imax=90)
      tilt_pid = PID(p=0.05, i=0, imax=90)
      sensor.reset()
      
      # 设置传感器设置
      sensor.set_contrast(1)
      sensor.set_brightness(1)
      sensor.set_saturation(1)
      sensor.set_gainceiling(16)
      
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QQVGA)
      sensor.set_vflip(True)#将镜头倒转过来
      sensor.skip_frames(10)
      sensor.set_auto_whitebal(False)
      clock = time.clock()
      p_out = Pin('P9', Pin.OUT_PP)
      p_4 = Pin('P4', Pin.IN, Pin.PULL_UP)#设置p_1为输入引脚,并开启上拉电阻
      p_5 = Pin('P5', Pin.IN, Pin.PULL_UP)#设置p_2为输入引脚,并开启上拉电阻
      
      def find_max(blobs):
          max_size=0
          for blob in blobs:
              if blob[2]*blob[2] > max_size:
                  max_blob=blob
                  max_size = blob[2]*blob[2]
          return max_blob
      
      # 在AP模式下启动wlan模块。
      
      #您可以阻止等待客户端连接
      #print(wlan.wait_for_sta(10000))
      
      
      def start_streaming(s):
          print ('Waiting for connections..')
          client, addr = s.accept()
          # 将客户端套接字超时设置为2秒
          client.settimeout(2.0)
          print ('Connected to ' + addr[0] + ':' + str(addr[1]))
      
          # 从客户端读取请求
          data = client.recv(1024)
          # 应该在这里解析客户端请求
      
          # 发送多部分head
          client.send("HTTP/1.1 200 OK\r\n" \
                      "Server: OpenMV\r\n" \
                      "Content-Type: multipart/x-mixed-replace;boundary=openmv\r\n" \
                      "Cache-Control: no-cache\r\n" \
                      "Pragma: no-cache\r\n\r\n")
      
          # FPS clock
          clock = time.clock()
      
          # 开始流媒体图像
          #注:禁用IDE预览以增加流式FPS。
          while (True):
              if p_4.value()==0:
                  b = 0
              clock.tick() # 跟踪snapshots()之间经过的毫秒数。
              img = sensor.snapshot().lens_corr(1.8)
              blobs = img.find_circles(threshold = 1500, x_margin = 10, y_margin = 10, r_margin = 10,
              r_min = 2, r_max = 100, r_step = 2)
              if blobs:
                  p_out.high()
                  print("输出信号1")
                  max_blob = find_max(blobs)
                  img.draw_circle(max_blob.x(), max_blob.y(), max_blob.r(), color = (255, 0, 0))
                  img.draw_cross(int(max_blob[0]), int(max_blob[1]))
              else:
                  p_out.low()
                  print("输出信号0")
              frame = sensor.snapshot()
              cframe = frame.compressed(quality=35)
              header = "\r\n--openmv\r\n" \
                       "Content-Type: image/jpeg\r\n"\
                       "Content-Length:"+str(cframe.size())+"\r\n\r\n"
              client.send(header)
              client.send(cframe)
              print(clock.fps())
      
      while(1):
          #if p_4.value() >= 1:            #追踪
          print(p_4.value())
          a = 1
          img_writer = image.ImageWriter("/stream.bin")
          while(a == 1):
              clock.tick()
              img = sensor.snapshot().lens_corr(1.8)
              img_writer.add_frame(img)#写入图片
              blobs = img.find_circles(threshold = 1500, x_margin = 10, y_margin = 10, r_margin = 10,
              r_min = 2, r_max = 100, r_step = 2)
              if blobs:
                  p_out.high()
                  max_blob = find_max(blobs)
                  pan_error = max_blob[0]-img.width()/2
                  tilt_error = max_blob[1]-img.height()/2
                  print("pan_error: ", pan_error)
                  img.draw_circle(max_blob.x(), max_blob.y(), max_blob.r(), color = (255, 0, 0))
                  img.draw_cross(int(max_blob[0]), int(max_blob[1]))
                  pan_output=pan_pid.get_pid(pan_error,1)/2
                  tilt_output=tilt_pid.get_pid(tilt_error,1)
                  print("pan_output",pan_output)
                  pan_servo.angle(pan_servo.angle()-pan_output)
                  tilt_servo.angle(tilt_servo.angle()+tilt_output)
                  print(a)
                  
              else:
                      
                  p_out.low()
              if p_4.value() == 0:
                  a=a+1
                  print(a)
          
      
          '''elif p_5.value() == 0:               #图传
              b = 1
              wlan = network.WINC(mode=network.WINC.MODE_AP)
              wlan.start_ap(SSID, key=KEY, security=wlan.WEP, channel=2)
      
              while (b==1):
                  # Create server socket
                  s = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM)
                  try:
                      # Bind and listen
                      s.bind([HOST, PORT])
                      s.listen(5)
      
                      # Set server socket timeout
                      # NOTE: Due to a WINC FW bug, the server socket must be closed and reopened if
                      # the client disconnects. Use a timeout here to close and re-create the socket.
                      s.settimeout(3)
                      start_streaming(s)
                  except OSError as e:
                      s.close()
                      print("socket error: ", e)
                      #sys.print_exception(e)
      
      img_writer.close()'''
      
      
      发布在 OpenMV Cam
      X
      xr1w
    • RE: 一直出现Exception: IDE interrupt不知道怎么回事,下面是我的代码

      IDE为啥会一直中断,怎么解决

      发布在 OpenMV Cam
      X
      xr1w
    • RE: 这个Capture Failed:-4是由什么导致的

      用了一个WIFI拓展版,和云台,由arduino给出控制信号,两个不同时使用,固件是3.6.70_1597214644038_4348.png

      import sensor, image, mjpeg, pyb, network, usocket, sys
      import time
      
      
      SSID ='OPENMV_AP'    # Network SSID
      KEY  ='1234567890'   # wifi密码(必须为10字符)
      HOST = ''           # 使用第一个可用的端口
      PORT = 8080         # 任意非特权端口
      
      
      from pid import PID
      from pyb import Servo
      from pyb import Pin
      pan_servo=Servo(1)
      tilt_servo=Servo(2)
      red_threshold  = (13, 49, 18, 61, 6, 47)
      pan_pid = PID(p=0.07, i=0, imax=90)
      tilt_pid = PID(p=0.05, i=0, imax=90)
      sensor.reset()
      
      # 设置传感器设置
      sensor.set_contrast(1)
      sensor.set_brightness(1)
      sensor.set_saturation(1)
      sensor.set_gainceiling(16)
      
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QQVGA)
      sensor.set_vflip(True)#将镜头倒转过来
      sensor.skip_frames(10)
      sensor.set_auto_whitebal(False)
      clock = time.clock()
      p_out = Pin('P9', Pin.OUT_PP)
      p_4 = Pin('P4', Pin.IN, Pin.PULL_UP)#设置p_1为输入引脚,并开启上拉电阻
      p_5 = Pin('P5', Pin.IN, Pin.PULL_UP)#设置p_2为输入引脚,并开启上拉电阻
      
      def find_max(blobs):
          max_size=0
          for blob in blobs:
              if blob[2]*blob[2] > max_size:
                  max_blob=blob
                  max_size = blob[2]*blob[2]
          return max_blob
      
      # 在AP模式下启动wlan模块。
      
      #您可以阻止等待客户端连接
      #print(wlan.wait_for_sta(10000))
      
      
      def start_streaming(s):
          print ('Waiting for connections..')
          client, addr = s.accept()
          # 将客户端套接字超时设置为2秒
          client.settimeout(2.0)
          print ('Connected to ' + addr[0] + ':' + str(addr[1]))
      
          # 从客户端读取请求
          data = client.recv(1024)
          # 应该在这里解析客户端请求
      
          # 发送多部分head
          client.send("HTTP/1.1 200 OK\r\n" \
                      "Server: OpenMV\r\n" \
                      "Content-Type: multipart/x-mixed-replace;boundary=openmv\r\n" \
                      "Cache-Control: no-cache\r\n" \
                      "Pragma: no-cache\r\n\r\n")
      
          # FPS clock
          clock = time.clock()
      
          # 开始流媒体图像
          #注:禁用IDE预览以增加流式FPS。
          while (True):
              if p_4.value()==0:
                  b = 0
              clock.tick() # 跟踪snapshots()之间经过的毫秒数。
              img = sensor.snapshot().lens_corr(1.8)
              blobs = img.find_circles(threshold = 1500, x_margin = 10, y_margin = 10, r_margin = 10,
              r_min = 2, r_max = 100, r_step = 2)
              if blobs:
                  p_out.high()
                  print("输出信号1")
                  max_blob = find_max(blobs)
                  img.draw_circle(max_blob.x(), max_blob.y(), max_blob.r(), color = (255, 0, 0))
                  img.draw_cross(int(max_blob[0]), int(max_blob[1]))
              else:
                  p_out.low()
                  print("输出信号0")
              frame = sensor.snapshot()
              cframe = frame.compressed(quality=35)
              header = "\r\n--openmv\r\n" \
                       "Content-Type: image/jpeg\r\n"\
                       "Content-Length:"+str(cframe.size())+"\r\n\r\n"
              client.send(header)
              client.send(cframe)
              print(clock.fps())
      
      while(1):
          if p_4.value() == 0:            #追踪
              a = 1
              img_writer = image.ImageWriter("/stream.bin")
              while(a == 1):
                  clock.tick()
                  img = sensor.snapshot().lens_corr(1.8)
                  img_writer.add_frame(img)#写入图片
                  blobs = img.find_circles(threshold = 1500, x_margin = 10, y_margin = 10, r_margin = 10,
                  r_min = 2, r_max = 100, r_step = 2)
                  if blobs:
                      p_out.high()
                      max_blob = find_max(blobs)
                      pan_error = max_blob[0]-img.width()/2
                      tilt_error = max_blob[1]-img.height()/2
                      print("pan_error: ", pan_error)
                      img.draw_circle(max_blob.x(), max_blob.y(), max_blob.r(), color = (255, 0, 0))
                      img.draw_cross(int(max_blob[0]), int(max_blob[1]))
                      pan_output=pan_pid.get_pid(pan_error,1)/2
                      tilt_output=tilt_pid.get_pid(tilt_error,1)
                      print("pan_output",pan_output)
                      pan_servo.angle(pan_servo.angle()-pan_output)
                      tilt_servo.angle(tilt_servo.angle()+tilt_output)
                      print(a)
                  
                  else:
                      p_out.low()
                  if p_5.value() == 0:
                      a = 0
                      print(a)
      
      
          elif p_5.value() == 0:               #图传
              b = 1
              wlan = network.WINC(mode=network.WINC.MODE_AP)
              wlan.start_ap(SSID, key=KEY, security=wlan.WEP, channel=2)
      
              while (b==1):
                  # Create server socket
                  s = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM)
                  try:
                      # Bind and listen
                      s.bind([HOST, PORT])
                      s.listen(5)
      
                      # Set server socket timeout
                      # NOTE: Due to a WINC FW bug, the server socket must be closed and reopened if
                      # the client disconnects. Use a timeout here to close and re-create the socket.
                      s.settimeout(3)
                      start_streaming(s)
                  except OSError as e:
                      s.close()
                      print("socket error: ", e)
                      #sys.print_exception(e)
      
      img_writer.close()
      
      
      发布在 OpenMV Cam
      X
      xr1w
    • IDE interrupt

      什么原因会导致IDE interrupt0_1597112715515_3333.png

      发布在 OpenMV Cam
      X
      xr1w
    • 这个Capture Failed:-4是由什么导致的

      0_1597045798845_QQ截图20200810154927.png

      发布在 OpenMV Cam
      X
      xr1w