0.序言
之前的博客里我們介紹了opencv在圖像上的基本操作,下面我們來進行稍微深入一點的介紹,從這里開始我們可以發現opencv庫能給我們帶來的更多更有趣的功能。從現在開始,我們將逐步深入了解opencv庫中對圖像處理的一些高級方式。
- 在這篇博客中,我們將學習如何將圖像在色彩空間之間的轉換,例如BGR轉換成灰色,BGR轉換成HSV等
- 此外,我們還將創建一個應用程序,以提取視頻中的彩色對象
- 我們還將學習以下功能:cv.cvtColor,**cv.inRange**等
1.改變顏色空間
OpenCV中有超過150種顏色空間轉換的方法。但是我們只有兩個最廣泛使用的,BGR↔灰色和BGR↔HSV。
對於顏色轉換,我們使用cv函數。
其中flag決定轉換的類型。
例如對於BGR→灰度轉換,我們讓flag標記為cv.COLOR_BGR2GRAY。類似地,對於BGR→HSV,我們讓flag標記為cv.COLOR_BGR2HSV。要獲取其他標記,只需在Python終端中運行以下命令:
需要注意的一點,HSV的色相范圍為[0,179],飽和度范圍為[0,255],值范圍為[0,255]。且不同的軟件里使用不同的規模,這點細節需要注意。
2.對象追蹤
因為在HSV空間中比在BGR顏色空間中更容易表示顏色。現在我們知道了如何將BGR圖像轉換成HSV,通過這種方式,我們可以就可以提取視頻或圖片中一個某個有顏色的對象。
例如下面的應用程序所示,我們將嘗試提取一個藍色的對象。方法如下:
- 取視頻的每一幀 。
- 轉換從BGR到HSV顏色空間 。
- 對HSV圖像設置藍色范圍的閾值。
- 單獨提取藍色對象。
代碼如下所示import cv2 as cv
注意:圖像中有一些噪點。我們將在后面的章節中看到如何刪除它們。 這是對象跟蹤中最簡單的方法。一旦學習了輪廓的功能,我們就可以做很多事情,例如找到該對象的質心並使用它來跟蹤對象等,這也是opencv庫的強大之處。