星瞳科技OpenMV視頻教程04-顏色識別

星瞳科技OpenMV視頻教程04-顏色識別

來自專欄 走在電子的前列線上 https://www.zhihu.com/video/975009145561206784

星瞳科技OpenMV官方代理視頻地址:點擊這裡!

嗶哩嗶哩地址:

星瞳科技OpenMV視頻教程04-顏色識別_野生技術協會_科技_bilibili_嗶哩嗶哩

本常式為 10-Color_Ttracking-blob_detection 本常式的目標是用OpenMV實現顏色識別。openmv可以多個顏色同時識別。

# Blob Detection Example## 這個例子展示了如何使用find_blobs函數來查找圖像中的顏色色塊。這個例子特別尋找深綠色的物體。import sensor, image, time# 為了使色彩追蹤效果真的很好,你應該在一個非常受控制的照明環境中。green_threshold = ( 0, 80, -70, -10, -0, 30)#設置綠色的閾值,括弧裡面的數值分別是L A B 的最大值和最小值(minL, maxL, minA,# maxA, minB, maxB),LAB的值在圖像左側三個坐標圖中選取。如果是灰度圖,則只需#設置(min, max)兩個數字即可。# You may need to tweak the above settings for tracking green things...# Select an area in the Framebuffer to copy the color settings.sensor.reset() # Initialize the camera sensor.sensor.set_pixformat(sensor.RGB565) # use RGB565.sensor.set_framesize(sensor.QQVGA) # use QQVGA for speed.sensor.skip_frames(10) # Let new settings take affect.sensor.set_auto_whitebal(False) # turn this off.#關閉白平衡。白平衡是默認開啟的,在顏色識別中,需要關閉白平衡。clock = time.clock() # Tracks FPS.while(True): clock.tick() # Track elapsed milliseconds between snapshots(). img = sensor.snapshot() # Take a picture and return the image. blobs = img.find_blobs([green_threshold]) #find_blobs(thresholds, invert=False, roi=Auto),thresholds為顏色閾值, #是一個元組,需要用括弧[ ]括起來。invert=1,反轉顏色閾值,invert=False默認 #不反轉。roi設置顏色識別的視野區域,roi是一個元組, roi = (x, y, w, h),代表 #從左上頂點(x,y)開始的寬為w高為h的矩形區域,roi不設置的話默認為整個圖像視野。 #這個函數返回一個列表,[0]代表識別到的目標顏色區域左上頂點的x坐標,[1]代表 #左上頂點y坐標,[2]代表目標區域的寬,[3]代表目標區域的高,[4]代表目標 #區域像素點的個數,[5]代表目標區域的中心點x坐標,[6]代表目標區域中心點y坐標, #[7]代表目標顏色區域的旋轉角度(是弧度值,浮點型,列表其他元素是整型), #[8]代表與此目標區域交叉的目標個數,[9]代表顏色的編號(它可以用來分辨這個 #區域是用哪個顏色閾值threshold識別出來的)。 if blobs: #如果找到了目標顏色 for b in blobs: #迭代找到的目標顏色區域 # Draw a rect around the blob. img.draw_rectangle(b[0:4]) # rect #用矩形標記出目標顏色區域 img.draw_cross(b[5], b[6]) # cx, cy #在目標顏色區域的中心畫十字形標記 print(b[5], b[6]) #輸出目標物體中心坐標 print(clock.fps()) # Note: Your OpenMV Cam runs about half as fast while # connected to your computer. The FPS should increase once disconnected.

運行程序:

如何選取thresholds閾值: 1.首先在攝像頭中找到目標顏色,在framebuffer中的目標顏色上左擊圈出一個矩形

2.在framebuffer下面的坐標圖中,選擇LAB Color Space。

3.三個坐標圖分別表示圈出的矩形區域內的LAB值,選取三個坐標圖的最大最小值

即(0, 50, -55, 0, 0, 35)

歡迎大家點贊!!!

推薦閱讀:

菜鳥數據科學入門03 - NumPy 數組基礎和基本操作
【搞機作戰室】機械師筆記本T90系統安裝教程
魔術濾鏡!用PS轉攝影為水彩畫效果圖~
筷枕三製作教程

TAG:教程 | 科技 | 視頻教程 |