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



    • 求助各位大咖,OpenMV4 cam可以支持鼠标事件吗?鼠标框出搜索目标,目前代码一运行就会停止在初始画面处

      import sensor, image, time
      from pyb import LED, Pin

      初始化摄像头

      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QVGA)
      sensor.skip_frames(time=2000)
      sensor.set_auto_gain(False)
      sensor.set_auto_whitebal(False)

      初始化 IO 引脚用于与 PLC 通信

      forward_pin = Pin('P0', Pin.OUT_PP)
      backward_pin = Pin('P1', Pin.OUT_PP)
      left_pin = Pin('P2', Pin.OUT_PP)
      right_pin = Pin('P3', Pin.OUT_PP)
      stop_pin = Pin('P4', Pin.OUT_PP)

      初始化 OpenMV 自带的三色灯

      red_led = LED(1)
      green_led = LED(2)
      blue_led = LED(3)

      初次上电,三色灯 LED 循环闪亮 1s,两次结束

      for _ in range(2):
      red_led.on()
      green_led.off()
      blue_led.off()
      time.sleep(1000)
      red_led.off()
      green_led.on()
      blue_led.off()
      time.sleep(1000)
      red_led.off()
      green_led.off()
      blue_led.on()
      time.sleep(1000)
      red_led.off()
      green_led.off()
      blue_led.off()

      初始化 Camshift 追踪器

      roi = None
      hist = None
      tracking = False

      鼠标事件变量

      mouse_down = False
      start_x = 0
      start_y = 0

      鼠标事件回调函数

      def mouse_callback(e):
      global mouse_down, start_x, start_y, roi, tracking
      if e[0] == 1: # 鼠标按下事件
      mouse_down = True
      start_x = e[1]
      start_y = e[2]
      elif e[0] == 3: # 鼠标释放事件
      mouse_down = False
      end_x = e[1]
      end_y = e[2]
      if abs(end_x - start_x) > 10 and abs(end_y - start_y) > 10: # 确保框选区域有效
      roi = (min(start_x, end_x), min(start_y, end_y), abs(end_x - start_x), abs(end_y - start_y))
      hist = image.Image(roi=roi).get_histogram()
      tracking = True

      绑定鼠标回调函数

      sensor.skip_frames(callback=mouse_callback)

      定义距离阈值(假设通过图像中目标大小估算距离)

      target_distance = 500 # 期望保持的距离(单位:cm)
      distance_threshold = 50 # 允许的距离误差

      异常标志

      is_abnormal = False

      clock = time.clock()
      last_blink_time = time.ticks_ms()

      while True:
      clock.tick()
      img = sensor.snapshot()

      if not tracking:
          # 等待用户鼠标框选目标
          img.draw_string(10, 10, "Use mouse to select an object to track", color=(255, 0, 0))
          if