• 免费好用的星瞳AI云服务上线!简单标注,云端训练,支持OpenMV H7和OpenMV H7 Plus。可以替代edge impulse。 https://forum.singtown.com/topic/9519
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 使用openmv4H7,用到了copy这个函数,显示错误(图示)是因为处理能力不够吗,如果是的话怎么解决?



    • import sensor, image, time
      
      # 初始化摄像头
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QVGA)
      sensor.skip_frames(time = 2000)
      thread=(50,255,-128,127,-128,127)
      sensor.set_auto_whitebal(False)
      sensor.set_contrast(5)
      # 创建两个图像缓冲区last_frame是背景
      current_frame = sensor.snapshot()
      #last_frame = current_frame.copy()
      last_update_time = 0
      person=0
      while(True):
          x=0
          y=0
          ry=0
          rx=0
          i=0
      
          # 获取当前帧并计算差分图像
          current_frame = sensor.snapshot()
      
          if time.time() - last_update_time > 0.5 :
              #sensor.snapshot().save("bg.bmp")
              last_frame = current_frame.copy()
              last_update_time = time.time()
      
      
      
          diff_frame = current_frame.difference(last_frame)
      
          # 对差分图像进行阈值分割和形态学操作
          threshold = (50, 255)
          binary_frame = diff_frame.to_grayscale()
          binary_frame.binary([threshold])
          binary_frame.erode(1)
          binary_frame.dilate(4)
          # 检测阈值
          ROI = (0, 0, binary_frame.width(), binary_frame.height())
          statistics=binary_frame.get_statistics(roi=ROI)
          gray_count=statistics.mean()
          #print("目标区域:", gray_count)
          if gray_count>50:
             person=1
             last_update_time = time.time()
          if gray_count<50:
             person=0
          # 进行连通性分析并绘制矩形框
          blobs = binary_frame.find_blobs([thread],area_threshold=2, pixels_threshold=2,merge=False)
          for blob in blobs:
              if blob.pixels() > 1000:
                  current_frame.draw_rectangle(blob.rect())
                  i=i+1
                  x=x+blob.cx()
                  y=y+blob.cy()
      
          if i>0:
              x=x/i
              y=y/i
          rx=x/binary_frame.width()
          ry=y/binary_frame.height()
          print("色块数:", i,"x:",x,"y:",y)
          print("x的相对位置",rx,"y的相对位置",ry)
          time.sleep(0.1)
      
      ```![0_1705200390750_微信图片_20240114104601.png](https://fcdn.singtown.com/12edd7d6-e462-4d79-87c4-71e39a88fad8.png)