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



    • 0_1751945507902_屏幕截图 2025-07-08 113107.png 0_1751945517276_屏幕截图 2025-07-08 113125.png

      请在这里粘贴代码
      

      模板匹配示例 - 归一化交叉相关算法(NCC)

      功能增强说明:

      1. 增加模板文件名显示在识别框上方

      2. 添加识别结果输出功能

      3. 优化代码结构并增加详细注释

      import time
      import sensor
      import image
      from image import SEARCH_EX, SEARCH_DS # 导入搜索模式常量

      ******************** 系统初始化配置 ********************

      初始化摄像头传感器

      sensor.reset()

      设置图像参数

      sensor.set_contrast(1) # 对比度设置(范围0-3)
      sensor.set_gainceiling(16) # 增益上限(防止过曝光)
      sensor.set_framesize(sensor.QQVGA) # 设置分辨率160x120(NCC算法推荐分辨率)
      sensor.set_pixformat(sensor.GRAYSCALE) # 使用灰度图模式(提升处理速度)

      摄像头安装方向校正(根据物理安装情况选择)

      sensor.set_vflip(True) # 垂直翻转图像
      sensor.set_hmirror(True) # 水平翻转图像

      ******************** 用户可配置参数 ********************

      TEMPLATE_PATH = "/9.pgm" # 模板文件存储路径
      MATCH_THRESHOLD = 0.70 # 匹配阈值(0.0-1.0,值越大匹配越严格)
      SEARCH_STEP = 4 # 搜索步长(越大搜索越快,但可能漏检)
      SEARCH_MODE = SEARCH_EX # 搜索模式:SEARCH_EX-全搜索,SEARCH_DS-菱形搜索
      TEXT_COLOR = 255 # 显示文本颜色(灰度值,255=白色)
      FRAME_MARGIN = 5 # 文字与识别框的间距(像素)

      加载模板图像

      try:
      template = image.Image(TEMPLATE_PATH)
      print("成功加载模板:", TEMPLATE_PATH)
      except Exception as e:
      raise Exception("模板加载失败:%s" % str(e))

      创建性能计数器

      clock = time.clock()

      ******************** 主循环 ********************

      while(True):
      clock.tick() # 开始跟踪帧率

      # 捕获一帧图像
      img = sensor.snapshot()
      
      # 执行模板匹配
      # find_template参数说明:
      # template: 模板图像对象
      # threshold: 匹配阈值(0.0-1.0)
      # roi: 感兴趣区域(x,y,w,h),默认全图搜索
      # step: 搜索步长(越大越快,精度越低)
      # search: 搜索模式(SEARCH_EX或SEARCH_DS)
      result = img.find_template(template, MATCH_THRESHOLD, 
                                step=SEARCH_STEP, search=SEARCH_MODE)
      
      # 如果检测到目标
      if result:
          # 解包匹配结果(x,y,w,h)
          x, y, w, h = result
          
          # 绘制识别框
          img.draw_rectangle(result, color=TEXT_COLOR)
          
          # 在识别框上方显示文件名
          # 计算文本位置:x坐标对齐框左侧,y坐标在框上方
          text_x = x
          text_y = y - FRAME_MARGIN if y > FRAME_MARGIN else 0
          img.draw_string(text_x, text_y, TEMPLATE_PATH.split('/')[-1],  # 显示文件名
                         color=TEXT_COLOR, scale=0.5)
          
          # 通过输出识别结果
          # 格式:检测时间(ms), 模板文件名, 坐标(x,y), 匹配相似度
          # 注意:实际相似度需要从匹配结果中获取,当前固件暂不支持返回相似度值
          print("[{:.0f}] 检测到模板: {}, 位置: ({},{})".format(
              time.ticks_ms(), TEMPLATE_PATH, x, y))
      
      # 显示帧率(保留1位小数)
      fps = clock.fps()
      img.draw_string(5, 5, "FPS:%.1f" % fps, color=TEXT_COLOR)
      print("当前帧率:", fps)


    • 把图片用文件夹装着,最好不要放在根目录如:“temp/9.pgm”(参考:https://book.openmv.cc/example/01-Camera/00-Snapshot/snapshot_on_movement.html