OpenCV和Python顏色檢測(cè)(P2)
書(shū)接上文
以下是運(yùn)行腳本的程序:(要在終端輸入呦~)
如果您的環(huán)境配置正確(這意味著您安裝了帶有Python綁定的OpenCV),您應(yīng)該將其視為輸出映像:

正如你所見(jiàn),紅色口袋妖怪墨盒很容易被檢測(cè)到!
現(xiàn)在讓我們?cè)囋囁{(lán)色的:

不,沒(méi)問(wèn)題!
黃色版本也有類(lèi)似的故事:

最后,還可以找到灰色Game Boy盒帶的輪廓:

通過(guò)顏色校正提高顏色檢測(cè)精度

在本教程中,您學(xué)習(xí)了如何通過(guò)硬編碼上下RGB顏色范圍來(lái)執(zhí)行顏色校正。
假設(shè)你有一個(gè)包含1000幅圖像的數(shù)據(jù)集,并被告知找到RGB值分別在(17、15、100)和(50、56、200)范圍內(nèi)的所有“紅色”對(duì)象。
如果您的整個(gè)圖像數(shù)據(jù)集是在受控照明條件下拍攝的,并且每個(gè)圖像的照明都相同,那么這不是一項(xiàng)困難的任務(wù)——您可以使用上面提到的硬編碼RGB值。
但是……假設(shè)你的圖像數(shù)據(jù)集不是在受控的光照條件下拍攝的。其中一些是用熒光燈拍攝的,另一些是在陽(yáng)光明媚的時(shí)候被帶到室外拍攝的,而另一些則是在黑暗沉悶的時(shí)候拍攝的。
這里的重點(diǎn)是,照明條件對(duì)輸出像素值有很大影響。
(以下是文章鏈接:https://www.pyimagesearch.com/2021/04/28/opencv-color-spaces-CV2-cvtcolor/)
在不同的光照下,顏色可能看起來(lái)非常不同,如果發(fā)生這種情況,硬編碼的RGB下限和上限范圍將失敗。
一個(gè)潛在的解決方案是使用一個(gè)不同的顏色空間,它可以更好地模仿人類(lèi)對(duì)顏色的感知——HSV和L*a*b*顏色空間是很好的選擇。
更好的選擇是使用顏色校正卡。將一張卡片(如上圖5所示)放置在包含我們正在捕獲的對(duì)象的場(chǎng)景中,然后通過(guò)以下方式對(duì)所有圖像進(jìn)行后期處理:
檢測(cè)顏色校正卡
確定色塊區(qū)域
執(zhí)行直方圖匹配以將顏色空間從一個(gè)圖像轉(zhuǎn)移到另一個(gè)圖像
通過(guò)這種方式,您可以幫助確保所有圖像的顏色一致,即使它們可能是在不同的照明條件下拍攝的。
為了進(jìn)一步了解這項(xiàng)技術(shù),我建議閱讀以下兩個(gè)教程:
與OpenCV、scikit圖像和Python匹配的直方圖
(https://www.pyimagesearch.com/2021/02/08/histogram-matching-with-opencv-scikit-image-and-python/)
使用OpenCV和Python進(jìn)行自動(dòng)顏色校正
(https://www.pyimagesearch.com/2021/02/15/automatic-color-correction-with-opencv-and-python/)