日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2021电赛F题之openmv数字识别--更新(附带视频与代码)

發布時間:2024/1/1 编程问答 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2021电赛F题之openmv数字识别--更新(附带视频与代码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

成果展示
常見出錯解決方法
openmv數字識別源代碼—gitee

效果如上
openmv的u盤里需要

思路:
模板匹配很簡單,只不過使用起來需要自己拍攝大量的模板,同時如果模板數量較多那么就會造成嚴重的畫面延遲,所以需要代碼的結構較為嚴謹,同時需要運用一些算法來優化代碼,
下面只是簡單的官方歷程,如果需要視頻中的效果,那么需要自己拍攝模板也需要自己優化代碼結構哦.
需要注意的是,如果想要提高幀率,那么這一次進行匹配的模板的數量就必須要少,在模板數量少的情況下還想能匹配的上就需要較好的模板了.
同時也可以適當降低匹配圖片的閾值要求,一般設定為0.5到0.7.

下面的這份代碼就是官方的源代碼
但是說到底我們的模板不可能只有一張,如果是那樣那么識別率也太低了對吧。

import time, sensor, image from image import SEARCH_EX, SEARCH_DS#重啟傳感器 sensor.reset()#傳感器配置 sensor.set_contrast(1) sensor.set_gainceiling(16) sensor.set_framesize(sensor.QQVGA) #由于運算量較大,因此只能使用QQVGA #可以通過設置窗口來減少搜索的圖像 #sensor.set_windowing(((640-80)//2, (480-60)//2, 80, 60)) sensor.set_pixformat(sensor.GRAYSCALE)#黑白#加載模板 #模板應該是一個小的灰度圖像,如32×32. template = image.Image("/1.pgm")#模板庫 要求圖片格式為pgm 需要下載到sd卡中clock = time.clock() #運行模板匹配 #查找模板(模板、閾值、[roi、步驟、搜索]#ROI:感興趣的區域元組(x,y,w,h)。 #步驟:使用的循環步驟(y+=步驟,x+=步驟)使用更大的步驟使其更快。 #搜索可以是image.Search\u EX進行窮舉搜索,也可以是image.Search\u DS進行菱形搜索 #注1:ROI必須小于圖像且大于模板。 #注2:在菱形搜索中,step和ROI都被忽略。 while (True):clock.tick()img = sensor.snapshot()# 獲取當前幀# roi=(0, 0, 400, 400) #設置感興趣區域r = img.find_template(template, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60)) #設置感興趣區域if r: #如果找到模板圖片舊框選出來img.draw_rectangle(r)print(clock.fps()) // 2499067858

因此我們就得像個辦法再增加模板的同時,還不降低幀率。
以openmv的性能,大概6-8張模板是能接受的,再多就會掉幀了
所以我們可以再執行find_template的時候進行for循環,讓他去遍歷一個list集合,遍歷其中的模板,這樣子我們就能盡可能提高對同一數字的識別率了.
也就是我們可以把代碼改進為下面這種

import time, sensor, image from image import SEARCH_EX, SEARCH_DS#重啟傳感器 sensor.reset()#傳感器配置 sensor.set_contrast(1) sensor.set_gainceiling(16) sensor.set_framesize(sensor.QQVGA) #由于運算量較大,因此只能使用QQVGA #可以通過設置窗口來減少搜索的圖像 #sensor.set_windowing(((640-80)//2, (480-60)//2, 80, 60)) sensor.set_pixformat(sensor.GRAYSCALE)#黑白#加載模板 #模板應該是一個小的灰度圖像,如32×32. list = ["/1.pgm", "/2.pgm", "/3.pgm", "/4.pgm","/5.pgm", "/6.pgm", "/7.pgm", "/8.pgm"] template = [0,0,0,0,0,0,0,0] def loadimg():t=0for i in list:template[t] = image.Image("i")#模板庫 要求圖片格式為pgm 需要下載到sd卡中t+=1return templateclock = time.clock() #運行模板匹配 #查找模板(模板、閾值、[roi、步驟、搜索]) #ROI:感興趣的區域元組(x,y,w,h)。 #步驟:使用的循環步驟(y+=步驟,x+=步驟)使用更大的步驟使其更快。 #搜索可以是image.Search\u EX進行窮舉搜索,也可以是image.Search\u DS進行菱形搜索 #注1:ROI必須小于圖像且大于模板。 #注2:在菱形搜索中,step和ROI都被忽略。 template = loadimg() while (True):clock.tick()img = sensor.snapshot()# 獲取當前幀# roi=(0, 0, 400, 400) #設置感興趣區域for i in template:r = img.find_template(i, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60)) #設置感興趣區域if r: #如果找到模板圖片舊框選出來img.draw_rectangle(r)print(clock.fps())

這樣子我們就能做到一次性遍歷好多張圖片了,之后如果還想優化,你就可以根據比賽的題目進行適當的操作了
(這個代碼不是用ide寫的,是手擼的,所以可能直接復制會有語法上的報錯,可以自己改一改哈)
如果對你有幫助的話就點個贊吧

總結

以上是生活随笔為你收集整理的2021电赛F题之openmv数字识别--更新(附带视频与代码)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。