Opencv图像处理之改变颜色空间
本節中,你將學習到
如何改變圖像顏色空間
- 1.如何將圖像從一個色彩空間轉換到另一個,像BGR--》灰色,BGR--》HSV 等
- 2.創建應用程序,提取視頻中的彩色對象
1.如何將圖像從一個色彩空間轉換到另一個,像BGR–》灰色,BGR–》HSV 等
OpenCV中有超過150種顏色空間轉換方法。但是我們將研究只有兩個最廣泛使用的,BGR?灰色和BGR?HSV。
對于顏色轉換,我們使用cv函數。cvtColor(input_image, flag),其中flag決定轉換的類型。
對于BGR→灰度轉換,我們使用標志cv.COLOR_BGR2GRAY。類似地,對于BGR→HSV,我們使用標志cv.COLOR_BGR2HSV。要獲取其他標記,只需在Python終端中運行以下命令:
import cv2 as cv >>> flags = [i for i in dir(cv) if i.startswith('COLOR_')] >>> print( flags )注意 HSV的色相范圍為[0,179],飽和度范圍為[0,255],值范圍為[0,255]。不同的軟件使用不同的規模。
轉換顏色空間示例:
2.創建應用程序,提取視頻中的彩色對象
現在我們知道了如何將BGR圖像轉換成HSV,我們可以使用它來提取一個有顏色的對象。在HSV中比在BGR顏色空間中更容易表示顏色。在我們的應用程序中,我們將嘗試提取一個藍色的對象。方法如下: - 取視頻的每一幀 - 轉換從BGR到HSV顏色空間 - 我們對HSV圖像設置藍色范圍的閾值 - 現在單獨提取藍色對象,我們可以對圖像做任何我們想做的事情。
import cv2 as cv import numpy as np cap = cv.VideoCapture(0) while(1):# 讀取幀ret, frame = cap.read()# 轉換顏色空間 BGR 到 HSVhsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)# 定義HSV中藍色的范圍lower_blue = np.array([110,50,50])upper_blue = np.array([130,255,255])# 制作掩膜,設置HSV的閾值使得只取藍色mask = cv.inRange(hsv, lower_blue, upper_blue)# 將掩膜和圖像逐像素相加,提取感興趣的區域res = cv.bitwise_and(frame,frame, mask= mask)cv.imshow('frame',frame)cv.imshow('mask',mask)cv.imshow('res',res)k = cv.waitKey(5) & 0xFFif k == 27:break cv.destroyAllWindows()
圖像掩膜是用選定的圖像、圖形或物體,對處理的圖像(全部或局部)進行遮擋,來控制圖像處理的區域或處理過程。
數字圖像處理中,掩模為二維矩陣數組,有時也用多值圖像,圖像掩模主要用于:
①提取感興趣區,用預先制作的感興趣區掩模與待處理圖像相乘,得到感興趣區圖像,感興趣區內圖像值保持不變,而區外圖像值都為0。
②屏蔽作用,用掩模對圖像上某些區域作屏蔽,使其不參加處理或不參加處理參數的計算,或僅對屏蔽區作處理或統計。
③結構特征提取,用相似性變量或圖像匹配方法檢測和提取圖像中與掩模相似的結構特征。
④特殊形狀圖像的制作。
在所有圖像基本運算的操作函數中,凡是帶有掩膜(mask)的處理函數,其掩膜都參與運算(輸入圖像運算完之后再與掩膜圖像或矩陣運算)。
利用掩膜(mask)進行“與”操作,即掩膜圖像白色區域是對需要處理圖像像素的保留,黑色區域是對需要處理圖像像素的剔除,其余按位操作原理類似只是效果不同而已。
3.如何找到要追蹤的HSV值?
這是在stackoverflow.com上發現的一個常見問題。它非常簡單,你可以使用相同的函數cv.cvtColor()。你只需傳遞你想要的BGR值,而不是傳遞圖像。例如,要查找綠色的HSV值,請在Python終端中嘗試以下命令:
部分內容轉自原文鏈接:https://blog.csdn.net/Lily_9/article/details/83143120
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Opencv图像处理之改变颜色空间的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转:c/c++ 运行库
- 下一篇: Python脚本如何生成Windows可