国产久操视频-国产久草视频-国产久热精品-国产久热香蕉在线观看-青青青青娱乐-青青青青在线成人视99

  • 方案介紹
  • 附件下載
  • 相關推薦
申請入駐 產(chǎn)業(yè)圖譜

3.5.2-1模板匹配識別 1-只匹配一個模板 openmv視覺

04/10 08:50
1453
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

聯(lián)系方式.txt

共1個文件

**非常詳細的視頻和文字教程,講解常見的openmv教程包括 巡線、物體識別、圓環(huán)識別、閾值自動獲取等。非常適合學習openmv、K210、K230等項目
視頻合集鏈接在


openmv教程合集 openmv入門到項目開發(fā) openmv和STM32通信 openmv和opencv區(qū)別 openmv巡線 openmv數(shù)字識別教程LCD

??痮penmv視覺文章鏈接:
https://blog.csdn.net/qq_46187594/category_12900902.html

3.5.1-不同數(shù)字識別方案的大概介紹

截至現(xiàn)在openmv實現(xiàn)的數(shù)字識別方案有幾個大類,

  1. 模板匹配識別方案 大概效果:最后優(yōu)化 將可能色塊縮放到模板大小一樣,能夠完成不錯效果,且識別速度很快,但是傾斜數(shù)字識別效果一般。
  2. mnist數(shù)字數(shù)據(jù)集識別方案 大概效果: 只能一次識別一個數(shù)字,效果一般。
  3. openmv 目標檢測識別 大概效果:效果根據(jù)數(shù)據(jù)集來定,數(shù)據(jù)集中出現(xiàn)的情況都能比較好的識別,所以需要根據(jù)自己的需要采集適合的數(shù)據(jù)集,識別幀率稍微慢些。具體的識別效果和幀率怎么樣大家可以看后面的視頻展示的,或者自己實現(xiàn)測試看看是否滿足需要這里大家盡量和我使用一樣的openmv IDE軟件版本和一樣的openmv 固件版本,也可能出現(xiàn)一些錯誤,如果錯誤要學會調(diào)試解決,可以提供下面思路: 出現(xiàn)了什么現(xiàn)象或者報錯?是否測試過自己電腦USB是否可能有問題或者用朋友電腦試試?是否重啟電腦嘗試過?

    是否在必應或谷歌或者AI上檢索提問,是否按照給出信息嘗試解決錯誤? 自己本身使用的openmv 固件還有openmv IDE 是否 測試過和 視頻一樣的軟件和固件版本,是否測試測試過最新的軟件和固件版本。

3.5.2-模板匹配識別

1-只匹配一個模板

我們只匹配一個模板的時候不需要插上SD卡

無論是使用openmv H7 還是 openmv H7 plus做下面各種數(shù)字識別方案基本都是不需要使用SD卡,除非你使用模型特別大或者模板特別多,所以 建議大家可以先不用SD進行測試使用,如果空間不足再使用SD卡,這樣也可以節(jié)省一點。

首先,我們需要創(chuàng)建或?qū)胍粋€模板,注意這個模板必須得是pgm格式的,而且大小有限制,不能超過openmv的像素大小。 我們可以直接從openmv里面截取一個模板圖像,可以先運行基礎的攝像頭圖像獲取的例程,讓openmv IDE軟件 顯示出圖像,然后進行截取。

比如先運行這個之前的代碼

# This work is licensed under the MIT license.
# Copyright (c) 2013-2023 OpenMV LLC. All rights reserved.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Hello World Example
#
# Welcome to the OpenMV IDE! Click on the green run arrow button below to run the script!

import sensor # 引入感光元件的模塊,用于操作攝像頭傳感器
import time # 引入時間模塊,用于控制時間延遲和FPS計算

# 初始化傳感器
sensor.reset()  # Reset and initialize the sensor. 重置并初始化傳感器
sensor.set_pixformat(sensor.RGB565)  # Set pixel format to RGB565 (or GRAYSCALE) 設置像素格式為RGB565(或者灰度)
sensor.set_framesize(sensor.QVGA)  # Set frame size to QVGA (320x240) 設置幀大小為QVGA(320x240分辨率)
#***************************如果不需要鏡像就注釋掉 下面 的代碼********************
# 設置攝像頭鏡像/翻轉(zhuǎn)操作,根據(jù)攝像頭安裝的方向決定是否需要
sensor.set_vflip(True)  # 垂直方向翻轉(zhuǎn)。根據(jù)實際攝像頭模塊的安裝位置調(diào)整是否需要此操作
#!?。≈匾翰煌瑪z像頭是否需要鏡像,根據(jù)實際情況定。如果不需要鏡像,請注釋掉以下代碼:
sensor.set_hmirror(True)  # 水平方向反轉(zhuǎn)。根據(jù)實際攝像頭模塊的安裝位置調(diào)整是否需要此操作
#!?。≈匾翰煌瑪z像頭是否需要鏡像,根據(jù)實際情況定。如果不需要鏡像,請注釋掉上述代碼。
#***************************如果不需要鏡像就注釋掉 上面 的代碼********************
sensor.skip_frames(time=2000)  # Wait for settings take effect. 等待2秒鐘讓設置生效
clock = time.clock()  # Create a clock object to track the FPS. 創(chuàng)建一個時鐘對象,用于追蹤FPS(每秒幀數(shù))



while True:
    clock.tick()  # Update the FPS clock. 更新FPS時鐘
    img = sensor.snapshot()  # Take a picture and return the image. 拍攝一張照片并返回圖像
    print(clock.fps())  # 輸出當前的幀率(FPS),用來衡量攝像頭的拍攝速度
    # Note: OpenMV Cam runs about half as fast when connected
    # to the IDE. The FPS should increase once disconnected.
    # 注意:當OpenMV相機連接到IDE時,速度大約是平時的一半。斷開連接后,F(xiàn)PS應該會提高。

然后把openmv和要識別的物體

截取模板的時候物體光線要和真實識別的時候基本一樣

攝像頭照射角度和舉例,真實識別的要基本一樣

然后不要在IDE上開啟縮放

右擊講框選的模板區(qū)域保存到PC
在這里插入圖片描述選擇保存到電腦
在這里插入圖片描述
同樣道理保存你要識別的數(shù)字模板,這里保存的是0-9,如果你只識別1-8那么你只保存1-8就可以了

注意從openmv里面直接截取保存的圖片是bmp格式的,我們需要把它轉(zhuǎn)換成pgm格式??梢栽谶@個網(wǎng)站進行在線轉(zhuǎn)換https://convertio.co/zh/bmp-pgm/ 或者BMP 到 PGM - 將您的 BMP 轉(zhuǎn)換為 PGM 的在線工具 或者免費BMP轉(zhuǎn)PGM在線轉(zhuǎn)換器 三個網(wǎng)站都可以,或者也可以百度上搜索BMP格式轉(zhuǎn)pgm格式。

網(wǎng)站上轉(zhuǎn)化后保存如下

在這里插入圖片描述
然后選擇你要匹配那個模板,放到openmv識別的內(nèi)存中,比如我們這里演示識別數(shù)字9
在這里插入圖片描述
代碼如下:

# 模板匹配示例 - 歸一化交叉相關算法(NCC)
# 功能增強說明:
# 1. 增加模板文件名顯示在識別框上方
# 2. 添加識別結(jié)果輸出功能
# 3. 優(yōu)化代碼結(jié)構并增加詳細注釋

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

# ******************** 系統(tǒng)初始化配置 ********************
# 初始化攝像頭傳感器
sensor.reset()

# 設置圖像參數(shù)
sensor.set_contrast(1)          # 對比度設置(范圍0-3)
sensor.set_gainceiling(16)      # 增益上限(防止過曝光)
sensor.set_framesize(sensor.QQVGA)  # 設置分辨率160x120(NCC算法推薦分辨率)
sensor.set_pixformat(sensor.GRAYSCALE)  # 使用灰度圖模式(提升處理速度)

# 攝像頭安裝方向校正(根據(jù)物理安裝情況選擇)
sensor.set_vflip(True)   # 垂直翻轉(zhuǎn)圖像
sensor.set_hmirror(True) # 水平翻轉(zhuǎn)圖像

# ******************** 用戶可配置參數(shù) ********************
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))

# 創(chuàng)建性能計數(shù)器
clock = time.clock()

# ******************** 主循環(huán) ********************
while(True):
    clock.tick()  # 開始跟蹤幀率
    
    # 捕獲一幀圖像
    img = sensor.snapshot()
    
    # 執(zhí)行模板匹配
    # find_template參數(shù)說明:
    # template: 模板圖像對象
    # threshold: 匹配閾值(0.0-1.0)
    # roi: 感興趣區(qū)域(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:
        # 解包匹配結(jié)果(x,y,w,h)
        x, y, w, h = result
        
        # 繪制識別框
        img.draw_rectangle(result, color=TEXT_COLOR)
        
        # 在識別框上方顯示文件名
        # 計算文本位置:x坐標對齊框左側(cè),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)
        
        # 通過輸出識別結(jié)果
        # 格式:檢測時間(ms), 模板文件名, 坐標(x,y), 匹配相似度
        # 注意:實際相似度需要從匹配結(jié)果中獲取,當前固件暫不支持返回相似度值
        print("[{:.0f}] 檢測到模板: {}, 位置: ({},{})".format(
            time.ticks_ms(), TEMPLATE_PATH, x, y))
    
    # 顯示幀率(保留1位小數(shù))
    fps = clock.fps()
    img.draw_string(5, 5, "FPS:%.1f" % fps, color=TEXT_COLOR)
    print("當前幀率:", fps)

識別結(jié)果顯示情況如下:
在這里插入圖片描述

  • 聯(lián)系方式.txt
    下載

相關推薦

方案定制

去合作
方案開發(fā)定制化,2000+方案商即時響應!
会东县| 鄂尔多斯市| 泗阳县| 屏边| 河间市| 江油市| 南通市| 临汾市| 沙雅县| 广灵县| 南昌县| 治多县| 麟游县| 翁牛特旗| 新昌县| 新乡市| 江华| 济阳县| 略阳县| 凉城县| 夏河县| 南京市| 黑龙江省| 文山县| 都匀市| 定州市| 册亨县| 信丰县| 尚志市| 大同县| 景泰县| 天台县| 侯马市| 通渭县| 定南县| 甘泉县| 宜黄县| 花莲县| 娄底市| 福安市| 宽甸|