天天看點

OpenMV(三)--實時擷取攝像頭圖檔前言

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右邊的視窗在實時顯示攝像頭的圖檔:

OpenMV(三)--實時擷取攝像頭圖檔前言

         然後我們點選IDE左下角的“串行終端”,可以發現它正在列印攝像頭的FPS:

OpenMV(三)--實時擷取攝像頭圖檔前言

3. 脫機運作程式

        有一點需要注意的是,我們的闆子連接配接到IDE的時候,運作速度會減少,當脫機運作的時候,我們可以發小FPS會提升到2倍左右的速度。關于怎麼在脫機的情況下運作我們寫好的程式呢?當我們的闆子通過USB插入電腦的時候,會跳出一個U盤界面,上面有三個檔案:

OpenMV(三)--實時擷取攝像頭圖檔前言

         其中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攝像頭

繼續閱讀