**功能介紹放開(kāi)頭, 使用便捷無(wú)需愁**
**這是全網(wǎng)最詳細(xì)、性價(jià)比最高的STM32實(shí)戰(zhàn)項(xiàng)目入門(mén)教程,通過(guò)合理的硬件設(shè)計(jì)和詳細(xì)的視頻筆記介紹,硬件使用STM32F103主控資料多方便學(xué)習(xí),通過(guò)3萬(wàn)字筆記、12多個(gè)小時(shí)視頻、20多章節(jié)代碼手把手教會(huì)你如何開(kāi)發(fā)和調(diào)試。讓你更快掌握嵌入式系統(tǒng)開(kāi)發(fā)。**
**V3.3.0-STM32智能小車 **
**視頻: **[https://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.click]
**V3:HAL庫(kù)開(kāi)發(fā)、功能:PID速度控制、PID循跡、PID跟隨、遙控、避障、PID角度控制、視覺(jué)控制、電磁循跡、RTOS等功能。**
## 19.2-openmv視覺(jué)循跡功能-完成視覺(jué)識(shí)別指定區(qū)域
**功 能: Openmv循跡識(shí)別線**
**硬件要求: OpenMV4 H7 Plus 或者 OpenMV4 H7、openMV串口轉(zhuǎn)接板(方便接線的,也可以不用)。**
**攝像頭五個(gè)口 是否識(shí)別出來(lái)黑線,通過(guò)openmv軟件串行終端輸出**
![在這里插入圖片描述](//file1.elecfans.com/web2/M00/03/DF/wKgaoma-1vWAX-2kAAU1Im5boYw941.png)
**根據(jù)自己攝像頭特點(diǎn)查看測(cè)試是否需要這兩句 鏡頭反轉(zhuǎn)的操作 **
```
# 注意是否有下面兩句根據(jù)自己攝像頭調(diào)整
sensor.set_vflip(True) #垂直方向翻轉(zhuǎn) 根據(jù)自己攝像頭和模塊安裝位置調(diào)整 ?。?!重要不同攝像頭是否需要鏡像根據(jù)實(shí)際情況定,如果不需要鏡像需要注釋掉
sensor.set_hmirror(True) #水平方向反轉(zhuǎn) 根據(jù)自己攝像頭和模塊安裝位置調(diào)整 ?。。≈匾煌瑪z像頭是否需要鏡像根據(jù)實(shí)際情況定,如果不需要鏡像需要注釋掉
```
**這里通過(guò)攝像頭識(shí)別指定區(qū)域是否我們想要的閾值**
**通過(guò)roi來(lái)定指定區(qū)域 **
![在這里插入圖片描述](//file1.elecfans.com/web2/M00/03/DF/wKgaoma-1vWASTJOAAJIxKQSSPE529.png)
**通過(guò)閾值編輯器設(shè)置閾值**
![在這里插入圖片描述](//file1.elecfans.com/web2/M00/02/F3/wKgZoma-1vWAKVQVAASw-07SFBo034.png)
![在這里插入圖片描述](//file1.elecfans.com/web2/M00/02/F3/wKgZoma-1vWAH4EFAAFkDsrru38135.png)
![在這里插入圖片描述](//file1.elecfans.com/web2/M00/02/F3/wKgZoma-1vWAd8UIAASrw6XHixs610.png)
**閾值保持在變量這里**
```
#最好根據(jù)自己情況設(shè)置一下?。。?/span>
GROUND_THRESHOLD=(0, 30, -22, 23, -128, 80)#閾值參數(shù),用于在圖像處理中對(duì)標(biāo)物體進(jìn)行顏色識(shí)別分割。在OpenMV IDE軟件 工具- >機(jī)器視覺(jué)- >閾值編輯器- >幀緩沖區(qū) 調(diào)整出要識(shí)別的LAB閾值。
?
```
**然后為了方便觀察openmv 板子程序是否在運(yùn)行,我們?cè)黾訉?duì)板載RGB燈 運(yùn)動(dòng)控制**
```
led = pyb.LED(1) # led = pyb.LED(1)表示led表示紅燈。各種狀態(tài)如下:Red LED = 1, Green LED = 2, Blue LED = 3, IR LEDs = 4.
led.on() #點(diǎn)亮紅燈 板載紅燈點(diǎn)亮表示程序得到執(zhí)行
```
**使用代碼如下**
```
import pyb, sensor, image, math, time
from pyb import UART
import ustruct
from image import SEARCH_EX, SEARCH_DS
import time
import sensor, lcd
#導(dǎo)入需要的庫(kù)和模塊
?
#使用中可能根據(jù)自己情況需要修改的值
#1. GROUND_THRESHOLD 閾值參數(shù) 通過(guò)工具- >機(jī)器視覺(jué)- >閾值編輯器- >幀緩沖區(qū) 調(diào)整出要識(shí)別的LAB閾值。
#2.注意是否有下面兩句根據(jù)自己攝像頭調(diào)整
#sensor.set_vflip(True)
#sensor.set_hmirror(True)
?
?
#sensor.set_contrast(1)#設(shè)置相機(jī)圖像對(duì)比度。-3至+3。
#sensor.set_gainceiling(16)#設(shè)置相機(jī)圖像增益上限。2, 4, 8, 16, 32, 64, 128。
?
roi1 = [( 20, 105, 10, 10),
( 45, 105, 10, 10),
( 75, 105, 10, 10),
( 105, 105, 10, 10),
(130, 105, 10, 10)]#定義一個(gè)名為roi1的列表,其中包含了5個(gè)元組。每個(gè)元組代表了一個(gè)矩形感興趣區(qū)域在圖像上的位置和大小。
#具體而言,每個(gè)元組包含了4個(gè)數(shù)值依次的含義是:ROI左上角點(diǎn)的x坐標(biāo)、ROI左上角點(diǎn)的y坐標(biāo)、ROI的寬度、ROI的高度
?
?
led = pyb.LED(1) # led = pyb.LED(1)表示led表示紅燈。各種狀態(tài)如下:Red LED = 1, Green LED = 2, Blue LED = 3, IR LEDs = 4.
led.on() #點(diǎn)亮紅燈 板載紅燈點(diǎn)亮表示程序得到執(zhí)行
?
sensor.reset()#初始化相機(jī)傳感器。
sensor.set_pixformat(sensor.RGB565)#設(shè)置相機(jī)模塊的像素模式:sensor.RGB565: 16 bits/像素。
sensor.set_framesize(sensor.QQVGA)#設(shè)置圖像分辨率、如果改變分辨率也要調(diào)整ROI區(qū)域。攝像頭不同、應(yīng)用場(chǎng)景不同可以選擇不同分辨率。這里使用QQVGA可能畫(huà)質(zhì)很胡,但是為了兼容不同型號(hào)攝像頭我們先使用QQVGA 不影響循跡效果
sensor.skip_frames(time=2000)#跳過(guò)指定數(shù)目的幀。在這里,設(shè)置為跳過(guò)2000毫秒(即2秒)的幀。這樣可以給傳感器一些時(shí)間進(jìn)行初始化和自適應(yīng)調(diào)整。
sensor.set_auto_whitebal(True)#設(shè)置為自動(dòng)白平衡模式。這使得攝像頭可以根據(jù)場(chǎng)景中的光照條件自動(dòng)調(diào)整圖像的白平衡,從而保持圖像色彩更加準(zhǔn)確和自然。
sensor.set_auto_gain(False)#關(guān)閉自動(dòng)增益模式。通常情況下,開(kāi)啟自動(dòng)增益會(huì)幫助攝像頭自動(dòng)調(diào)整亮度,并在低亮度環(huán)境下提高圖像清晰度。通過(guò)設(shè)置為False,禁用了這個(gè)功能,使用固定增益值。
?
# 注意是否有下面兩句根據(jù)自己攝像頭調(diào)整
sensor.set_vflip(True) #垂直方向翻轉(zhuǎn) 根據(jù)自己攝像頭和模塊安裝位置調(diào)整 ?。?!重要不同攝像頭是否需要鏡像根據(jù)實(shí)際情況定,如果不需要鏡像需要注釋掉
sensor.set_hmirror(True) #水平方向反轉(zhuǎn) 根據(jù)自己攝像頭和模塊安裝位置調(diào)整 ?。?!重要不同攝像頭是否需要鏡像根據(jù)實(shí)際情況定,如果不需要鏡像需要注釋掉
?
?
#lcd.init() #初始化lcd屏幕
?
#最好根據(jù)自己情況設(shè)置一下?。?!
GROUND_THRESHOLD=(0, 30, -22, 23, -128, 80)#閾值參數(shù),用于在圖像處理中對(duì)標(biāo)物體進(jìn)行顏色識(shí)別分割。在OpenMV IDE軟件 工具- >機(jī)器視覺(jué)- >閾值編輯器- >幀緩沖區(qū) 調(diào)整出要識(shí)別的LAB閾值。
?
while(True):
?
data=0
blob1=None
blob2=None
blob3=None
blob4=None
blob5=None
flag = [0,0,0,0,0]
img = sensor.snapshot().lens_corr(strength = 1.7 , zoom = 1.0)#對(duì)獲取到的圖像執(zhí)行鏡頭校正的操作。
blob1 = img.find_blobs([GROUND_THRESHOLD], roi=roi1[0])#在圖像中通過(guò)顏色閾值 GROUND_THRESHOLD1 檢測(cè) roi1[0] 區(qū)域內(nèi)的色塊,并將檢測(cè)結(jié)果賦值給 blob1。
blob2 = img.find_blobs([GROUND_THRESHOLD], roi=roi1[1])#同理
blob3 = img.find_blobs([GROUND_THRESHOLD], roi=roi1[2])
blob4 = img.find_blobs([GROUND_THRESHOLD], roi=roi1[3])
blob5 = img.find_blobs([GROUND_THRESHOLD], roi=roi1[4])
?
if blob1:#如果roi1區(qū)域內(nèi)找到閾值色塊 就會(huì)賦值flag[0]為1
flag[0] = 1
if blob2:
flag[1] = 1
if blob3:
flag[2] = 1
if blob4:
flag[3] = 1
if blob5:
flag[4] = 1
print(flag[0],flag[1],flag[2],flag[3],flag[4])#把數(shù)據(jù)打印在串行終端方便調(diào)試
?
for rec in roi1:#遍歷所有感興趣的區(qū)域roi1 并繪制color=(255,0,0)顏色
img.draw_rectangle(rec, color=(255,0,0))
#lcd.display(img) # Take a picture and display the image.#將圖像顯示在lcd中
?
```
** 識(shí)別過(guò)程**
![在這里插入圖片描述](//file1.elecfans.com/web2/M00/03/DF/wKgaoma-1vWATc0IAAR-f9Pnr9k233.png)
審核編輯 黃宇
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
視覺(jué)識(shí)別
+關(guān)注
關(guān)注
3文章
89瀏覽量
16734 -
STM32F103C8T6
+關(guān)注
關(guān)注
108文章
160瀏覽量
83569 -
智能尋跡
+關(guān)注
關(guān)注
0文章
3瀏覽量
1157 -
openMV
+關(guān)注
關(guān)注
3文章
39瀏覽量
9817
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
19.3-星曈科技 openmv Hopenmv發(fā)送五個(gè)uchar Openmv+STM32F103C8T6視覺(jué)巡線小車 STM32循跡小車系列教程
19.3-【星曈科技】openmv Hopenmv發(fā)送五個(gè)uchar Openmv+STM32F103C8T6視覺(jué)
19.4-STM32接收數(shù)據(jù)-狀態(tài)顯示在屏幕 openMV尋跡與小車控制 Openmv+STM32F103C8T6視覺(jué)巡線小車
19.4-STM32接收數(shù)據(jù)-狀態(tài)顯示在屏幕 openMV尋跡與小車控制 Openmv+STM32F103C8T6視覺(jué)巡
【國(guó)外開(kāi)源】STM32 機(jī)器人視覺(jué)攝像機(jī)OpenMV Cam設(shè)計(jì)(硬件+固件源碼等)
OpenMV項(xiàng)目旨在通過(guò)開(kāi)發(fā)開(kāi)源的低成本機(jī)器視覺(jué)攝像機(jī),為業(yè)余愛(ài)好者和制造商提供機(jī)器視覺(jué)。第一代OpenMV攝像機(jī)基于STM32F ARM
發(fā)表于 09-29 14:49
視覺(jué)模塊OpenMV淺說(shuō)LED燈
視覺(jué)模塊OpenMV淺說(shuō)LED燈,講在開(kāi)頭的話:最初接觸到OpenMV這款視覺(jué)模塊是參加了一個(gè)學(xué)
發(fā)表于 07-20 06:59
Openmv與Stm32f407通信入門(mén)
的是stm32h7,用的串口為串口3??刂瓢迨?b class='flag-5'>stm32f407zgt6,用的串口是串口2。目的是將openmv的數(shù)據(jù)通過(guò)串口傳到控制板并在oled上面顯示。大概思路兩個(gè)單片機(jī)用串口通信,必須把自己的串口
發(fā)表于 08-04 07:36
介紹機(jī)器視覺(jué)模塊OpenMV-RT初體驗(yàn)
本系列痞子衡給大家介紹的是機(jī)器視覺(jué)模塊OpenMV-RT初體驗(yàn)?! 〗┠隀C(jī)器視覺(jué)應(yīng)用一直是個(gè)很火的方向,想象一下機(jī)器如果能長(zhǎng)上“眼睛”,是不是就可以做一些人類才能做的事情,因此機(jī)器
發(fā)表于 12-23 06:02
基于OPENMV和STM32的識(shí)別追蹤小車設(shè)計(jì)實(shí)現(xiàn)
STM32為控制器的尋物小車,不多說(shuō),直接進(jìn)入正題!材料準(zhǔn)備小車底盤(pán)直流減速電機(jī)杜邦線若干7.2V電源L298N模塊STM32F407最小系統(tǒng)OPE
發(fā)表于 02-25 06:21
STM32F7691開(kāi)發(fā)套件能用openMV實(shí)現(xiàn)視覺(jué)識(shí)別嗎?
請(qǐng)問(wèn)選擇了AI方向,選用的是STM32F7691開(kāi)發(fā)套件,能用openMV實(shí)現(xiàn)視覺(jué)識(shí)別嗎,還是必須在板子上用F769NI芯片實(shí)現(xiàn)
發(fā)表于 08-07 06:26
openMV攝像頭循跡小車
主控MSP430F5529,電機(jī)驅(qū)動(dòng)模塊L298N,openMV攝像頭一、總體思路使用openMV線性回歸,然后使用pid輸出,使用串口發(fā)送到MSP430,在經(jīng)過(guò)處理輸出PWM到車輪,
發(fā)表于 12-16 16:56
?52次下載
STM32與openmv通信(HAL庫(kù))
坐標(biāo)發(fā)給32(為了 調(diào)試,順便將32收到的數(shù)據(jù)傳給上位機(jī))實(shí)驗(yàn)所需:openmv,STM32F103ZET6(正點(diǎn)原子)一、openmv程序編寫(xiě)# Untitled - By:阿布 - 周日
發(fā)表于 12-24 19:16
?23次下載
openmv4系列1----基本認(rèn)知
openmv4系列1----基本認(rèn)知1.openmv的由來(lái)??OpenMV是一個(gè)開(kāi)源,低成本,功能強(qiáng)大的機(jī)器視覺(jué)
發(fā)表于 12-29 18:51
?8次下載
OPENMV和STM32的識(shí)別追蹤小車(詳細(xì)版)之OPENMV端
STM32為控制器的尋物小車,不多說(shuō),直接進(jìn)入正題!材料準(zhǔn)備小車底盤(pán)直流減速電機(jī)杜邦線若干7.2V電源L298N模塊STM32F407最小系統(tǒng)OPE
發(fā)表于 01-13 12:05
?0次下載
OpenMV初識(shí)
在嵌入式端進(jìn)行python開(kāi)發(fā)。OpenMV基于32位,ARM Cortex-M7內(nèi)核的OpenMV-H7, 并結(jié)合各種攝像頭,可以進(jìn)行多種機(jī)器視覺(jué)應(yīng)用的實(shí)現(xiàn),比如人臉檢測(cè),物體分類等
評(píng)論