真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何使用Opencv識別顏色

這篇文章將為大家詳細講解有關(guān)如何使用Opencv識別顏色,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

創(chuàng)新互聯(lián)成都企業(yè)網(wǎng)站建設(shè)服務,提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)網(wǎng)站開發(fā),網(wǎng)站定制,建網(wǎng)站,網(wǎng)站搭建,網(wǎng)站設(shè)計,成都響應式網(wǎng)站建設(shè)公司,網(wǎng)頁設(shè)計師打造企業(yè)風格網(wǎng)站,提供周到的售前咨詢和貼心的售后服務。歡迎咨詢做網(wǎng)站需要多少錢:18982081108

彩色模型  

數(shù)字圖像處理中常用的采用模型是RGB(紅,綠,藍)模型和HSV(色調(diào),飽和度,亮度),RGB廣泛應用于彩色監(jiān)視器和彩色視頻攝像機,我們平時的圖片一般都是RGB模型。而HSV模型更符合人描述和解釋顏色的方式,HSV的彩色描述對人來說是自然且非常直觀的。

HSV模型

HSV模型中顏色的參數(shù)分別是:色調(diào)(H:hue),飽和度(S:saturation),亮度(V:value)。由A. R. Smith在1978年創(chuàng)建的一種顏色空間, 也稱六角錐體模型(Hexcone Model)。

(1)色調(diào)(H:hue):用角度度量,取值范圍為0°~360°,從紅色開始按逆時針方向計算,紅色為0°,綠色為120°,藍色為240°。它們的補色是:黃色為60°,青色為180°,品紅為300°;

(2)飽和度(S:saturation):取值范圍為0.0~1.0,值越大,顏色越飽和。

(3)亮度(V:value):取值范圍為0(黑色)~255(白色)

RGB轉(zhuǎn)成HSV

設(shè) (r, g, b) 分別是一個顏色的紅、綠和藍坐標,它們的值是在 0 到 1 之間的實數(shù)。設(shè) max 等價于 r, g 和 b 中的最大者。設(shè) min 等于這些值中的最小者。要找到在 HSV 空間中的 (h, s, v) 值,這里的 h ∈ [0, 360)是角度的色相角,而 s, v ∈ [0,1] 是飽和度和亮度,方法如下:

max=max(R,G,B)

min=min(R,G,B)

if R = max, H = (G-B)/(max-min)

if G = max, H = 2 + (B-R)/(max-min)

if B = max, H = 4 + (R-G)/(max-min) 

H = H * 60

if H < 0, H = H + 360

  • V=max(R,G,B)

  • S=(max-min)/max

OpenCV下有個函數(shù)可以直接將RGB模型轉(zhuǎn)換為HSV模型,OpenCV中H∈ [0, 180), S ∈ [0, 255], V ∈ [0, 255]。我們知道H分量基本能表示一個物體的顏色,但是S和V的取值也要在一定范圍內(nèi),因為S代表的是H所表示的那個顏色和白色的混合程度,也就說S越小,顏色越發(fā)白,也就是越淺;V代表的是H所表示的那個顏色和黑色的混合程度,也就說V越小,顏色越發(fā)黑。經(jīng)過實驗,識別藍色的取值是 H在100到140,S和V都在90到255之間。一些基本的顏色H的取值可以如下設(shè)置:

Orange 0-22,Yellow 22- 38,Green 38-75,Blue 75-130,Violet 130-160,Red 160-179

具體實現(xiàn)

(1) 讀取一張圖片

cvtColor(imgOriginal, imgHSV, COLOR_BGR2HSV);

(2)將彩色圖像均衡化 

split(imgHSV, hsvSplit);
equalizeHist(hsvSplit[2],hsvSplit[2]);
merge(hsvSplit,imgHSV);

(3)檢測顏色

inRange(imgHSV, Scalar(iLowH, iLowS, iLowV), Scalar(iHighH, iHighS, iHighV), imgThresholded);

(4)進行開操作和閉操作,去除噪聲的影響。

Mat element = getStructuringElement(MORPH_RECT, Size(5, 5));
morphologyEx(imgThresholded, imgThresholded, MORPH_OPEN, element);
morphologyEx(imgThresholded, imgThresholded, MORPH_CLOSE, element);

代碼:

#include
#include
#include
 
using namespace cv;
using namespace std;
 
//入口主函數(shù)
int main(int argc, char** argv)
{
 //打開攝像頭,從攝像頭獲取圖像
 VideoCapture cap(0);
 if (!cap.isOpened())
 {
 cout << "Cannot open the web cam"< hsvSplit;
 cvtColor(imgOriginal,imgHSV,COLOR_BGR2HSV);
 
 //轉(zhuǎn)化成直方圖均衡化
 split(imgHSV,hsvSplit);
 equalizeHist(hsvSplit[2],hsvSplit[2]);
 merge(hsvSplit,imgHSV);
 Mat imgThresholded;
 //確定顏色顯示的范圍
 inRange(imgHSV, Scalar(iLowH, iLowS, iLowV), Scalar(iHighH, iHighS,iHighV),imgThresholded);
 //去除噪點
 Mat element = getStructuringElement(MORPH_RECT,Size(5,5));
 morphologyEx(imgThresholded,imgThresholded,MORPH_OPEN,element);
  //連接連通域
 morphologyEx(imgThresholded, imgThresholded, MORPH_CLOSE, element);
 imshow("Thresholded Image",imgThresholded);
 imshow("Original",imgOriginal);
 //等待時間
 char Key = (char)waitKey(300);
 if (Key==27)
 {
 break;
 }
 }
 return 0;
}

關(guān)于如何使用Opencv識別顏色就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


新聞名稱:如何使用Opencv識別顏色
文章位置:http://weahome.cn/article/pphsdj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部