OpenMV(一)–基礎介紹與硬體架構
OpenMV(二)–IDE安裝與固件下載下傳
前言
利用OpenMV進行機器視覺開發的基礎就是結合攝像頭拍攝的圖像進行分析,擷取攝像頭拍攝的圖檔是萬裡長征的第一步。本系列專欄中采用的都是是OV7725卷簾快門攝像頭。我們将從OpenMV中相應的構造函數開始,對實作該功能的源碼進行分析。
1. 構造函數
OpenMV将所有的與攝像頭有關的功能全部封裝在了sensor子產品中,可以很友善的調用。
sensor函數
sensor.reset()初始化攝像頭
sensor.set_pixformat(pixformat) 設定像素格式。pixformat有三個參數:
sensor.GRAYSCAL: 灰階圖像,每個像素8位(1位元組),處理速度快
sensor.RGB565: 每個像素為16位,5位紅色,6位綠色,5位藍色,處理速度比灰階圖像漫
sensor.BAYER: 占空間小,僅捕捉圖像用,不能做圖像處理
sensor.set_framesize(framesize) 設定每幀大小,也就是圖像尺寸。常用的framesize參數有一下幾個:
sensor.QQVGA: 160*120
sensor.QVGA: 320*240
sensor.VGA: 640*480
sensor.LCD: 128*160 (用于官方LCD子產品)
sensor.QQVGA2: 128*120 (用于官方LCD子產品)
sensor.skip_frames([n, time])攝像頭初始化以後忽略的幀數或者等待的時間,等待攝像頭穩定。
n: 忽略的幀數
time: 等待的時間
sensor.snapshot() 使用攝像頭拍一張照片,并傳回imag圖像
clock函數
clock函數可以用來計算攝像頭的每秒幀數
clock = time.clock() 建立一個時鐘
clock.tick() 開始追蹤運作時間
clock.fps() 停止追蹤運作時間,并傳回目前的FPS(每秒傳輸幀數)
2. 源碼分析
下面我們以官方的實時擷取攝像頭圖檔源碼為例,對其進行分析, 實時擷取圖像的步驟為:
初始化攝像頭 --> 設定采集照片的格式 --> 設定采集照片的大小 --> 等待攝像頭設定完成 --> 拍攝圖像.
"""
實時擷取攝像頭圖檔例程
"""
# 導入相應的庫
import sensor, image, time
# 初始化攝像頭
sensor.reset()
# 設定采集到照片的格式:彩色RGB
sensor.set_pixformat(sensor.RGB565)
# 設定采集到照片的大小: 320 * 240
sensor.set_framesize(sensor.QVGA)
# 等待一段時間2s,等攝像頭設定好
sensor.skip_frames(time = 2000)
# 建立一個時鐘來計算攝像頭每秒采集的幀數FPS
clock = time.clock()
# 實時顯示攝像頭拍攝的照片
while(True):
# 更新FPS時鐘
clock.tick()
# 拍攝圖檔并傳回img
img = sensor.snapshot()
# 序列槽列印FPS參數
print(clock.fps())
我們将闆子連接配接到OpenMV IDE, 建立檔案,并将上述代碼copy進去,點選左下角的綠色按鈕,我們就可以看到IDE右邊的視窗在實時顯示攝像頭的圖檔:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLzEFVPd3ZU5UeRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5QTM0IjM0EjM3IDNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
然後我們點選IDE左下角的“串行終端”,可以發現它正在列印攝像頭的FPS:
3. 脫機運作程式
有一點需要注意的是,我們的闆子連接配接到IDE的時候,運作速度會減少,當脫機運作的時候,我們可以發小FPS會提升到2倍左右的速度。關于怎麼在脫機的情況下運作我們寫好的程式呢?當我們的闆子通過USB插入電腦的時候,會跳出一個U盤界面,上面有三個檔案:
其中main.py是主函數代碼檔案,上電之後首先運作。我們可以将代碼直接copy到main.py中,即可實作程式的脫機運作。當然,如果要看到實時顯示圖像的效果,我們需要給我們的闆子加一個LCD,并更改程式如下(以官方LCD為例):
"""
實時擷取攝像頭圖檔例程
"""
# 導入相應的庫
import sensor, image, lcd
# 初始化攝像頭
sensor.reset()
# 設定采集到照片的格式:彩色RGB
sensor.set_pixformat(sensor.RGB565)
# 設定采集到照片的大小: 320 * 240
sensor.set_framesize(sensor.QVGA)
# 等待一段時間2s,等攝像頭設定好
sensor.skip_frames(time = 2000)
#LCD初始化
lcd.init()
# 實時顯示攝像頭拍攝的照片
while(True):
# 拍照和顯示圖像.
lcd.display(sensor.snapshot())
————————————————
版權聲明:本文為CSDN部落客「愛吃骨頭的貓、」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。
原文連結:https://blog.csdn.net/qq_42580947/article/details/105799349
OpenMV(三)--實時擷取攝像頭圖檔_魔法師の屋子★↓☆-CSDN部落格_openmv攝像頭