簡體   English   中英

Java和OpenCV顏色檢測

[英]Java and OpenCV color detection

我正在學校的一個項目上工作,基本上是:編寫一個使無人機自動飛行的應用程序,並通過掃描掛在牆上的QR碼,能夠在房間中導航以完成某些任務。

我目前正在研究的是,讓無人機檢測紙箱(作為障礙物)。 這些盒子是白色的,上面有一個藍色的圓圈。 我計划解決此問題的方法是掃描框架中的顏色和正方形:

如果無人機檢測到正方形,請檢查它是否為白色。 如果是白色,請檢查它是否包含藍色圓圈。 如果可以,我可以說它很可能是一個紙板箱。

這是盒子的樣子:

如果有人能夠提供一些關於如何開始進行顏色檢測的指示,我將非常高興!

PS:因為我真的不知道要提供什么,所以我沒有提供任何代碼。 如果需要,我會很樂意提供一些

更新:對於任何遇到與我同樣的問題的人,一位同學為我的具體情況提供了一個很好的鏈接:

http://opencv-java-tutorials.readthedocs.io/en/latest/08-object-detection.html

我會從不同的角度進行操作,首先檢測藍色圓圈。

  1. 檢測基色

    請參閱RGB值基准顏色名稱

  2. 選擇所有與白色或灰色像素相鄰的藍色像素

    由於您的圓圈具有黑色邊框,因此您必須選擇接近白色,灰色,黑色...的所有藍色像素。 結果如下(綠色為選定像素):

    例

    另一種(更可靠的)可能性是同時選擇與白色和藍色相鄰的所有黑色像素。

  3. 進行連接的組件分析

    因此將所有連接的像素合並為折線

  4. 對於每個折線,確定它是圓形/橢圓形/橢圓形

    這可以通過研究線段之間的角度來完成。 如果有尖銳的尖峰,則存在尖銳的邊緣,而不是橢圓形。 如果圓周與從其邊界框計算的圓/橢圓/卵形相距太遠,則它不是橢圓形,而是一些更復雜的曲率。

  5. 對於每個橢圓,確定它是否充滿藍色

    因此,只需填充橢圓形圓周的填充蒙版,然后將原始圖像中藍色的像素與不存在像素中的像素進行比較即可。 如果該比率接近100%藍色,則為藍色橢圓形填充。

    由於標記器內部還具有某些功能,因此您可以計算其中所有基色的比率,以更准確地檢測標記器。

    查看算法:橢圓匹配,了解其他一些想法。

  6. 現在您可以類似地檢查背景是否為白色/灰色

還有許多其他可能的方法,例如OCR和字符相似性或基於FFT / DCT,圓的Hough變換...也不僅限於幾何屬性比較,還可以比較直方圖...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM