回答
根據背景的穩定性以及想要對圖像執行的操作,您有三個選項。
你可以使你的圖像如此黑暗,你唯一能看到的就是激光點。您可以通過關閉光圈和/或縮短快門時間來完成此操作。即使使用便宜的攝像頭,通常也可以在驅動程序中完成。一旦你完成了這個工作,找到激光點的工作非常簡單。您儘可能使圖像變暗,因爲通常激光照射的位置太亮而不適合相機拾取。這意味着(正如你所經歷的那樣),你不能辨別圖像中的光激光點和其他光物體。通過變黑,你現在可以做到這一點。
如果您對圖像有其他用途(顯示給人)並且背景穩定,您還可以將最後幾幅視頻圖像的平均值用作「背景」,然後找到大的地方該背景與最新圖像之間的差異。這通常是激光指向的地方(同樣,如果你的背景足夠穩定)。最後,如果你的背景不穩定,並且你不想讓圖像變得非常黑暗,那麼最後的選擇是尋找所有像素都非常亮,紅色通道比綠色更亮和藍色(如果您使用的是紅色激光)。這個系統仍然會被白點分散注意力,但不像找到明亮的像素那樣多。如果您的激光指示器點的中心確實顯示爲亮白色,而不考慮激光顏色,則此技術將允許您在該亮點周圍找到「環」(點的外部,其中激光器不像它位於圖像中心,以便與圖像中激光的實際顏色一起顯示)。然後你可以使用簡單的morphological operations,(可能是closing已經足夠)來填充這些圈子。
我想我最好嘗試前兩個選項,似乎可能:)。非常感謝你。 – Keshan 2010-10-25 17:14:11
假設您使用這些顏色之一的激光:紅色,綠色,藍色。 如果激光點顯得非常亮(至少在一個通道中,例如紅色),那麼簡單地對圖像/通道進行閾值處理,比如灰度值爲200,將會爲您提供幾個候選激光。如果其他通道在這個區域內很暗(呃),那麼你知道這是一個正確顏色的明亮光線。按尺寸過濾一下,你很有可能找到這個位置。
感謝您的回覆,我有一面牆,它正在投影,因此,當我限定圖像並尋找紅色通道時,投影表面上的紅色有時可能會造成一些麻煩。 – Keshan 2010-10-25 02:45:38
如果你在你的攝像頭上貼一個紅外濾鏡,你的投影將不會被拾取,使激光點的檢測更容易(使用簡單的背景扣除等)。假設激光指示器發出紅外光...
嘗試模板Maching。 首先你將「指針」指向一個特定的地方,這樣就可以完成聖殿了。然後你只需要尋找它。
或者,正如jilles de wit所言,你可以把最後2幀的差異,可能差異會顯示你的指針。
將最後2幀轉換爲灰度,然後應用SUB功能。
正如其他答案中所建議的那樣,搜索顏色可能是一個好主意。 你應該考慮尋找一個特定的顏色範圍。最好的方法是將圖片轉換爲HSL或HSV色彩空間。
cv::cvtColor(src, hsv, COLOR_BGR2HSV);
有關Wikipedia的更多信息。
然後你有三個通道: 色調(=顏色),飽和度和亮度(或值)。
使用cv::inRange(hsv, cv::Scalar(159, 135, 165), cv::Scalar(179, 255, 200), inRange);
您現在可以生成黑白圖像,該圖像顯示顏色範圍內的像素。 標量是每個通道的低值和高值。
在這個例子中,你將獲得像素,135和255和值165和200
之間也許這可以提高您的跟蹤之間的159和179(色調)之間的顏色,飽和度。
這個怎麼樣代碼
https://www.youtube.com/watch?v=MKUWnz_obqQ
https://github.com/niitsuma/detect_laser_pointer
在這段代碼中,觀察到HSV顏色使用霍特林的T形角測試
- 1. 使用OpenCV激光線檢測
- 2. 使用OpenCv進行形狀檢測
- 3. 使用OpenCV進行網格檢測
- 4. 使用OpenCV進行水平線檢測
- 5. 使用opencv python進行液體檢測
- 6. 使用OpenCV進行鏡頭檢測
- 7. 使用openCV進行序列號檢測
- 8. OpenCV:使用cvHoughCircle進行圓檢測
- 9. 使用OpenCV進行圖像檢測
- 10. 使用OpenCV進行線條檢測
- 11. 使用OpenCV進行徽標檢測
- 12. 使用opencv進行人臉檢測
- 13. 使用OpenCV進行Blob檢測
- 14. 使用OpenCV進行實時圓檢測
- 15. 使用opencv進行虹膜檢測
- 16. 使用OpenCV進行手部檢測
- 17. 如何使用OpenCV檢測紅外光
- 18. 在C++中使用OpenCV進行對象檢測
- 19. 使用Python檢測圖像中激光/光線的邊緣
- 20. 檢測廣場opencv和c + +
- 21. 用紅色激光對象檢測
- 22. 使用OpenCV測量光量?
- 23. 使用OpenCV和nodejs進行人臉檢測
- 24. 使用opencv和python進行人臉檢測的準確性
- 25. 使用OpenCV在Python中進行HOG培訓和檢測
- 26. 使用opencv和python進行facedetection只能檢測眼睛區域
- 27. 使用opencv進行face_eyes檢測和跟蹤
- 28. 使用OpenCV和圓角卡進行更好的邊緣檢測
- 29. 用OpenCv進行透視檢測
- 30. OpenCV Android軌道激光點
是否有可能使用某種相比,註冊配色網絡攝像頭前面的過濾器,如果有的話,這些過濾器是什麼? – Keshan 2010-10-24 19:40:25
事實上,光源對你來說真的很重要,或者你只是使用一種光源,因爲這是一種製造亮點的便捷方式?也就是說,你是否有理由關心源是單色和相位匹配?如果是這樣,點投影表面的光學特性是什麼(平坦度等)? – dmckee 2010-10-24 20:11:03
你可以掃描圖像的小區域,與鄰近區域相比,紅色分量顯着增強嗎? – Dialecticus 2010-10-24 20:13:51