**非常詳細(xì)的視頻和文字教程,講解常見的openmv教程包括 巡線、物體識別、圓環(huán)識別、閾值自動獲取等。非常適合學(xué)習(xí)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
5.2 利用LCD屏幕進(jìn)行離線調(diào)試(脫機(jī)調(diào)閾值)
LCD屏幕原理圖
按鍵
LCD對應(yīng)PCB上從正面看,從右邊到左邊依次是KEY1、KEY2、KEY3
5.2.1-LCD基礎(chǔ)顯示功能(重要!使用LCD屏幕必看!)
注意你板子的不同固件,可以使用的LCD函數(shù)有所不同,所以如果LCD報錯,可以更改相關(guān)代碼。
0-LCD無法顯示或者LCD代碼報錯(LCD屏幕使用出現(xiàn)問題必看)
問題是:openmv長排針和LCD排母接觸不良,解決方法,不要插太深排母或者 插更深一些排母,重新拔插幾次排母,或者更換焊接新的排針排母。
LCD安裝問題
如果是openmv通過我們的支架安裝到了小車上,依舊是可以有位置安裝我們的openmv的。
如果不知道支架如何組裝和安裝的可以看下面這個視頻的第19章節(jié):(https://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from)
然后再把螺絲擰上
然后插上就行
代碼報錯
解決:不同openmv版本,對應(yīng)的openmv函數(shù)是不一樣的,可以根據(jù)自己的固件版本自行替代函數(shù)。
現(xiàn)在一共分為兩類,一種的
# 此代碼適用于4.4.3及之前的固件版本。
import lcd #這個是4.4.3要包括的模塊
lcd.init() # 初始化lcd屏幕。
lcd.display(img) # 拍照并顯示圖像。 注意這個img是你要處理顯示的圖像,要根據(jù)自己的進(jìn)行更改
# 此代碼適用于4.5.1至最新的固件版本。
import display #4.5.1要包含的頭文件
lcd = display.SPIDisplay() #使用的初始化方式
lcd.write(img) # 拍照并顯示圖像。注意這個img是你要處理顯示的圖像,要根據(jù)自己的進(jìn)行更改
電腦連接openmv 后下面會出現(xiàn)openmv固件版本
1-openmv固件為4.4.3及之前固件版本
適用于4.4.3及之前的固件版本,如果你是4.5.1及其以上固件,要換代碼
# LCD顯示例程
#
# 注意:要運(yùn)行這個例子,你需要一個用于OpenMV的LCD擴(kuò)展板。
#
# LCD擴(kuò)展板允許您在運(yùn)行時查看您的OpenMV Cam的幀緩沖區(qū)。
#
# 此代碼適用于4.4.3及之前的固件版本。
import sensor, image, lcd
#教程作者:好家伙VCC
#歡迎交流群QQ: 771027961 作者郵箱: 1930299709@qq.com
#更多教程B站主頁:[好家伙VCC的個人空間-好家伙VCC個人主頁-嗶哩嗶哩視頻](https://space.bilibili.com/434192043)
#淘寶主頁鏈接:[首頁-好家伙VCC-淘寶網(wǎng)](https://shop415231378.taobao.com)
#更多嵌入式手把手教程-盡在好家伙VCC
sensor.reset() # 初始化sensor
#***************************如果不需要鏡像就注釋掉 下面 的代碼********************
# 設(shè)置攝像頭鏡像/翻轉(zhuǎn)操作,根據(jù)攝像頭安裝的方向決定是否需要
sensor.set_vflip(True) # 垂直方向翻轉(zhuǎn)。根據(jù)實際攝像頭模塊的安裝位置調(diào)整是否需要此操作
#?。?!重要:不同攝像頭是否需要鏡像,根據(jù)實際情況定。如果不需要鏡像,請注釋掉以下代碼:
sensor.set_hmirror(True) # 水平方向反轉(zhuǎn)。根據(jù)實際攝像頭模塊的安裝位置調(diào)整是否需要此操作
#?。?!重要:不同攝像頭是否需要鏡像,根據(jù)實際情況定。如果不需要鏡像,請注釋掉上述代碼。
#***************************如果不需要鏡像就注釋掉 上面 的代碼********************
sensor.set_pixformat(sensor.RGB565) # or sensor.GRAYSCALE
#設(shè)置圖像色彩格式,有RGB565色彩圖和GRAYSCALE灰度圖兩種
sensor.set_framesize(sensor.QQVGA2) # 128x160大小的特定液晶屏。
lcd.init() # 初始化lcd屏幕。
while(True):
lcd.display(sensor.snapshot()) # 拍照并顯示圖像。
2-openmv固件為4.5.1至最新的固件版本
固件版本為:
4.5.1至最新的固件版本
# LCD顯示例程
#
# 注意:要運(yùn)行這個例子,你需要一個用于OpenMV的LCD擴(kuò)展板。
#
# LCD擴(kuò)展板允許您在運(yùn)行時查看您的OpenMV Cam的幀緩沖區(qū)。
#
# 此代碼適用于4.5.1至最新的固件版本。
import sensor
import display
#教程作者:好家伙VCC
#歡迎交流群QQ: 771027961 作者郵箱: 1930299709@qq.com
#更多教程B站主頁:[好家伙VCC的個人空間-好家伙VCC個人主頁-嗶哩嗶哩視頻](https://space.bilibili.com/434192043)
#淘寶主頁鏈接:[首頁-好家伙VCC-淘寶網(wǎng)](https://shop415231378.taobao.com)
#更多嵌入式手把手教程-盡在好家伙VCC
sensor.reset() # 初始化sensor
#***************************如果不需要鏡像就注釋掉 下面 的代碼********************
# 設(shè)置攝像頭鏡像/翻轉(zhuǎn)操作,根據(jù)攝像頭安裝的方向決定是否需要
sensor.set_vflip(True) # 垂直方向翻轉(zhuǎn)。根據(jù)實際攝像頭模塊的安裝位置調(diào)整是否需要此操作
#?。?!重要:不同攝像頭是否需要鏡像,根據(jù)實際情況定。如果不需要鏡像,請注釋掉以下代碼:
sensor.set_hmirror(True) # 水平方向反轉(zhuǎn)。根據(jù)實際攝像頭模塊的安裝位置調(diào)整是否需要此操作
#?。?!重要:不同攝像頭是否需要鏡像,根據(jù)實際情況定。如果不需要鏡像,請注釋掉上述代碼。
#***************************如果不需要鏡像就注釋掉 上面 的代碼********************
sensor.set_pixformat(sensor.RGB565) # or sensor.GRAYSCALE
sensor.set_framesize(sensor.QQVGA2) # 128x160大小的特定液晶屏。
# 初始化lcd屏幕。
# 注意:如果支持,可以使用 DAC 或 PWM 背光控制器來控制背光強(qiáng)度:
# lcd = display.SPIDisplay(backlight=display.DACBacklight(channel=2))
# lcd.backlight(25) # 25% intensity
# 否則,將使用默認(rèn)的 GPIO(開on/關(guān)off)控制器。
lcd = display.SPIDisplay()
while True:
lcd.write(sensor.snapshot()) # 拍照并顯示圖像。
所以比如你使用的是4.5.1固件,但是你使用LCD部分代碼是4.4.3就會可能出現(xiàn)下面的報錯
報錯沒有l(wèi)cd模塊 ImportError: no module named ‘Icd’
如果你使用的是4.4.3之后固件,然后使用的代碼是4.5.1之后使用的LCD代碼,會出現(xiàn)下面報錯
沒有display模塊。ImportError: no module named ‘display’
所以總結(jié)他們的函數(shù)如下
# 此代碼適用于4.4.3及之前的固件版本。
import lcd #這個是4.4.3要包括的模塊
lcd.init() # 初始化lcd屏幕。
lcd.display(img) # 拍照并顯示圖像。 注意這個img是你要處理顯示的圖像,要根據(jù)自己的進(jìn)行更改
# 此代碼適用于4.5.1至最新的固件版本。
import display #4.5.1要包含的頭文件
lcd = display.SPIDisplay() #使用的初始化方式
while True:
lcd.write(img) # 拍照并顯示圖像。注意這個img是你要處理顯示的圖像,要根據(jù)自己的進(jìn)行更改
3-兼容之前分辨率如何讓LCD屏幕顯示更全
之前我們設(shè)置的圖像分辨率大多是QQVGA、QVGA或者其他分辨率,很少使用QQVGA2
那么我們?nèi)绾问褂肣QVGA、QVGA分辨率又能讓屏幕完全顯示畫幅那。
比如下面是這個,顯示QQVGA的分辨率,顯示就是不全的,五個字,可能就只能顯示四個字,這樣不方便我們預(yù)覽調(diào)試。
注意這里我們使用的sensor.set_framesize(sensor.QQVGA) # QQVGA 分辨率
QQVGA分辨率
適用于4.4.3及之前的固件版本
# LCD顯示例程
#
# 注意:要運(yùn)行這個例子,你需要一個用于OpenMV的LCD擴(kuò)展板。
#
# LCD擴(kuò)展板允許您在運(yùn)行時查看您的OpenMV Cam的幀緩沖區(qū)。
#
# 此代碼適用于4.4.3及之前的固件版本。
import sensor, image, lcd
#教程作者:好家伙VCC
#歡迎交流群QQ: 771027961 作者郵箱: 1930299709@qq.com
#更多教程B站主頁:[好家伙VCC的個人空間-好家伙VCC個人主頁-嗶哩嗶哩視頻](https://space.bilibili.com/434192043)
#淘寶主頁鏈接:[首頁-好家伙VCC-淘寶網(wǎng)](https://shop415231378.taobao.com)
#更多嵌入式手把手教程-盡在好家伙VCC
sensor.reset() # 初始化sensor
#***************************如果不需要鏡像就注釋掉 下面 的代碼********************
# 設(shè)置攝像頭鏡像/翻轉(zhuǎn)操作,根據(jù)攝像頭安裝的方向決定是否需要
sensor.set_vflip(True) # 垂直方向翻轉(zhuǎn)。根據(jù)實際攝像頭模塊的安裝位置調(diào)整是否需要此操作
#?。?!重要:不同攝像頭是否需要鏡像,根據(jù)實際情況定。如果不需要鏡像,請注釋掉以下代碼:
sensor.set_hmirror(True) # 水平方向反轉(zhuǎn)。根據(jù)實際攝像頭模塊的安裝位置調(diào)整是否需要此操作
#?。?!重要:不同攝像頭是否需要鏡像,根據(jù)實際情況定。如果不需要鏡像,請注釋掉上述代碼。
#***************************如果不需要鏡像就注釋掉 上面 的代碼********************
sensor.set_pixformat(sensor.RGB565) # or sensor.GRAYSCALE
#設(shè)置圖像色彩格式,有RGB565色彩圖和GRAYSCALE灰度圖兩種
sensor.set_framesize(sensor.QQVGA) # QQVGA 分辨率
lcd.init() # 初始化lcd屏幕。
while(True):
lcd.display(sensor.snapshot()) # 拍照并顯示圖像。
下面是顯示效果。LCD屏幕上顯示的內(nèi)容是不全面的。
所以這里我們需要修改一下,下面的代碼顯示更全面。
4.4.3及之前固件版本使用
# LCD顯示例程
#
# 注意:要運(yùn)行這個例子,你需要一個用于OpenMV的LCD擴(kuò)展板。
#
# LCD擴(kuò)展板允許您在運(yùn)行時查看您的OpenMV Cam的幀緩沖區(qū)。
#
# 此代碼適用于4.4.3及之前的固件版本。
import sensor, image, lcd
sensor.reset() # 初始化sensor
#***************************如果不需要鏡像就注釋掉 下面 的代碼********************
# 設(shè)置攝像頭鏡像/翻轉(zhuǎn)操作,根據(jù)攝像頭安裝的方向決定是否需要
sensor.set_vflip(True) # 垂直方向翻轉(zhuǎn)。根據(jù)實際攝像頭模塊的安裝位置調(diào)整是否需要此操作
#?。?!重要:不同攝像頭是否需要鏡像,根據(jù)實際情況定。如果不需要鏡像,請注釋掉以下代碼:
sensor.set_hmirror(True) # 水平方向反轉(zhuǎn)。根據(jù)實際攝像頭模塊的安裝位置調(diào)整是否需要此操作
#!?。≈匾翰煌瑪z像頭是否需要鏡像,根據(jù)實際情況定。如果不需要鏡像,請注釋掉上述代碼。
#***************************如果不需要鏡像就注釋掉 上面 的代碼********************
sensor.set_pixformat(sensor.RGB565) # or sensor.GRAYSCALE
#設(shè)置圖像色彩格式,有RGB565色彩圖和GRAYSCALE灰度圖兩種
sensor.set_framesize(sensor.QQVGA) # QQVGA 分辨率
lcd.init() # 初始化lcd屏幕。
while(True):
img = sensor.snapshot()
lcd_coyp = img.copy(0.7,0.7)# 兩個參數(shù)分別是 圖像在水平x方向上的縮放比例、圖像在垂直方向Y上的縮放比例 如果圖像顯示不全就調(diào)整更小些
lcd.display(lcd_coyp) # 拍照并顯示圖像。
4.5.1至最新的固件版本
# LCD顯示例程
#
# 注意:要運(yùn)行這個例子,你需要一個用于OpenMV的LCD擴(kuò)展板。
#
# LCD擴(kuò)展板允許您在運(yùn)行時查看您的OpenMV Cam的幀緩沖區(qū)。
#
# 此代碼適用于4.5.1至最新的固件版本。
import sensor
import display
sensor.reset() # 初始化sensor
#***************************如果不需要鏡像就注釋掉 下面 的代碼********************
# 設(shè)置攝像頭鏡像/翻轉(zhuǎn)操作,根據(jù)攝像頭安裝的方向決定是否需要
sensor.set_vflip(True) # 垂直方向翻轉(zhuǎn)。根據(jù)實際攝像頭模塊的安裝位置調(diào)整是否需要此操作
#?。?!重要:不同攝像頭是否需要鏡像,根據(jù)實際情況定。如果不需要鏡像,請注釋掉以下代碼:
sensor.set_hmirror(True) # 水平方向反轉(zhuǎn)。根據(jù)實際攝像頭模塊的安裝位置調(diào)整是否需要此操作
#?。?!重要:不同攝像頭是否需要鏡像,根據(jù)實際情況定。如果不需要鏡像,請注釋掉上述代碼。
#***************************如果不需要鏡像就注釋掉 上面 的代碼********************
sensor.set_pixformat(sensor.RGB565) # or sensor.GRAYSCALE
sensor.set_framesize(sensor.QQVGA) # 128x160大小的特定液晶屏。
# 初始化lcd屏幕。
# 注意:如果支持,可以使用 DAC 或 PWM 背光控制器來控制背光強(qiáng)度:
# lcd = display.SPIDisplay(backlight=display.DACBacklight(channel=2))
# lcd.backlight(25) # 25% intensity
# 否則,將使用默認(rèn)的 GPIO(開on/關(guān)off)控制器。
lcd = display.SPIDisplay()
while True:
img = sensor.snapshot()
lcd_coyp = img.copy(0.7,0.7)# 兩個參數(shù)分別是 圖像在水平x方向上的縮放比例、圖像在垂直方向Y上的縮放比例 如果圖像顯示不全就調(diào)整更小些
lcd.write(lcd_coyp) # 拍照并顯示圖像。