今天,就讓我們來看看魔方的顏色識別是如何做到的。做影象處理的話我們可以用opencv(用到了顏色空間的轉換rgb轉hsv以及roi區域提取),全稱為open source computer vision library,直譯為「開源計算機視覺庫」。我用的版本為3.0。
先來說說我做顏色識別的思路:在介紹魔方機械人的那篇部落格中我們可以看到魔方在整個機械人中的相對位置是固定的,也就是說我們可以在影象確定的位置去提取顏色而不用去做輪廓識別啊什麼的,這就叫所謂的定點顏色識別,但是在每個色塊只提取乙個畫素點肯定是不行的,所以還需要做一些處理。那麼問題來了,如何將採集到計算機中,當然是通過攝像頭了,那麼要用幾個攝像頭呢?我的建議是三個,雖然我們都知道乙個攝像頭同時最多能捕捉到到魔方的三個面,既然最多同時能捕捉到魔方的三個面那為什麼不用兩個攝像頭呢?這是因為基於做顏色識別的方法,只有兩個攝像頭採集出來的影象做roi不是很方便,因此我用了三個,每個攝像採集魔方的兩個面。大概思路就是這樣,接下來我詳細和大家說說具體的實現。
每個攝像頭所提取的影象都像這樣處理(最後的到的是六張影象)。
cvtcolor
(srcimage, hsvimage, color_bgr2hsv)
;//srcimage為原始影象,hsvimage為轉換後的影象,color_bgr2hsv的意思為bgr轉hsv。
之後
double h,s,v;
point a;
a =point
(x, y)
;//x,y對應該畫素點在影象中的位置
h = hsvimage.at
(a)[0]
;//得到h的數值
s = hsvimage.at
(a)[1]
;//得到s的數值
h = hsvimage.at
(a)[2]
;//得到v的數值
以上得出的只是單個畫素點的h,s,v數值,我們需要取對應色塊上更多的畫素點h,s,v值然後計算器平均值然後再去判斷其色塊的顏色,具體怎麼去取,用什麼方式去計算均值得由自己去定義。假設我們已經得出了48個色塊的s,h,v數值,之後就是進到顏色匹配的方法中,用每個色塊的s,h,v範圍去匹配顏色,經過顏色匹配後會輸出一串串行,這個序列就是所謂的打亂序列。
各種顏色對應的hsv範圍大家最好根據自己的實際情況多測試幾遍之後再放到你的方法中比較好。這裡我放乙個我測試得出的hsv數值範圍(僅供參考):黃白
藍綠紅橙
hmin280
8044
1253
hmax
44180
12477
18028
smin
43.6
043.6
43.6
43.6
43.6
smax
25543.5
255255
255255
vmin
4646
4646
4646
vmax
255255
255255
255255
核心部分就是顏色識別還有還原演算法這兩部分,把這兩個部分搞定也就完成了整個機械人的百分之八十了。
至此,就是機械人整個顏色識別的部分了。
魔方機械人(基於opencv、arduino)
一.魔方機械人(一)還原演算法
三.下位機——arduino
四.機械人設計思路
五.整合
如何製作魔方機械人 00緒論
pps 這個硬體復原魔方的部分是寒假前完成的,剩餘的部分本想回校後再弄,結果因為疫情的原因 幸好當初留了足夠的過程性資料 只能給大家展示一下復原魔方的大體流程 其實只差了個串列埠通訊 ppps 有機會我會上傳到b站上。當初製作魔方機械人的時候走了許多的彎路,做完之後才發現,當初要是有個人能帶著我或是...
公尺兔機械人魔方 小公尺發布公尺兔積木機械人 抄襲樂高?
小公尺推出了雙十一四大新品的最後一件 公尺兔積木機械人。這款機械人由978個零件構成,使用者可自由組裝零件,diy不同的外形。在操作上,機械人支援手機遙控和模組化圖形程式設計。公尺兔機械人11月11日零點開售,售價499元。事實上,公尺兔機械人來自於小公尺生態鏈企業北京愛其科技 這家公司註冊於201...
機械人視覺專案 視覺檢測識別 機械人跟隨(3)
嵌入式裝置,計算資源有限,對演算法的執行時間敏感。yolov3在tx2上能跑到5fps,但存在偶爾漏檢的情況。yolov3使用darknet。kcf雖然非常快,但很容易跟丟,對於目標形變 人的姿態變化 目標移動較快 目標離開場景等情況,效果較差。kcf使用opencv contrib的實現。dete...