最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于opencv實現(xiàn)視頻中的顏色識別功能

 更新時間:2022年07月22日 16:11:50   作者:chenguanging080  
這篇文章主要介紹了基于opencv實現(xiàn)視頻中的顏色識別功能,文章詳細(xì)介紹了顏色識別的原理及opencv中的顏色模型,基于c++代碼實現(xiàn)顏色識別功能,需要的朋友可以參考下

顏色識別的原理

opencv中的顏色模型

RGB

RGB具有三個通道其,分別表示紅色通道®,綠色通道(G),藍(lán)色通道(B),3個通道在opencv中的取值均為0~255,它的顏色由3個通道的取值來共同決定,因此如果使用RGB圖像來進(jìn)行顏色的識別,會丟失很多的顏色。

HSV

HSV具有三個通道,其分別表示色調(diào)(H),飽和度(S),亮度(V),3個通道在opencv中的取值分別如下:

  • H:0~180
  • S:0~255
  • V:0~255

其中H通道和S通道決定了顏色,V通道決定亮度
各種顏色對應(yīng)的三個通道的取值表如下:

在這里插入圖片描述

因此通過限制HSV通道中相對應(yīng)的數(shù)值,就可以識別出對應(yīng)的顏色

顏色識別的實現(xiàn)(c++)

1.讀取攝像頭的實時畫面

VideoCapture capture(1);//0為電腦本身攝像頭,1位外置攝像頭

2.讀取攝像頭的當(dāng)前一幀的數(shù)據(jù)并轉(zhuǎn)換到HSV空間

capture >> frame; //讀取當(dāng)前幀
cvtColor(frame, imgHSV, COLOR_BGR2HSV);

3.對HSV圖像進(jìn)行直方圖均衡化
在此處使用直方圖均衡化是因為可以使用這種方法可以使原來比較少像素的灰度會被分配到別的灰度去,像素相對集中, 處理后灰度范圍變大,對比度變大,清晰度變大,所以能有效增強圖像。

split(imgHSV,temporary);
equalizeHist(temporary[2], temporary[2]);
merge(temporary, imgHSV);   //將HSV圖像分割通道,并且做直方圖的均衡化

使用equalizeHist()函數(shù),其輸入必須是單通道的,因此使用split函數(shù)將得到的HSV圖像分割為三個通道之后,在進(jìn)行直方圖均衡化,然后再使用merge函數(shù)來合并三個通道。
此處僅對V通道進(jìn)行了直方圖均衡化,因為通過比對發(fā)現(xiàn)只對V通道進(jìn)行效果最好,具體的原因還不清楚。

4.將直方圖均衡化之后,使用inRange()函數(shù)來進(jìn)行圖像的識別

inRange(imgHSV, Scalar(H_W_L, S_W_L, V_W_L), Scalar(H_W_H, S_W_H, V_W_H), image);

其中H_W_L,H_W_L, S_W_L, V_W_L. . . 等數(shù)值分別為前面表格對應(yīng)的顏色值的最小值和最大值。
此函數(shù)是將在范圍內(nèi)的像素值為255,其與為0,反映到圖像上就是,選中的顏色為白色,其與的均為黑色。
操作到此顏色可以進(jìn)行識別,但是效果可能不會很好,因此可以再使用開操作來消除噪點,去掉小的干擾快,再使用閉操作來填充閉合區(qū)域。

5.開操作

kernel = getStructuringElement(MORPH_RECT, Size(3, 3));//3*3的矩形卷積核,只要是奇數(shù)的都可以
morphologyEx(image,image,2,kernel);

6.閉操作

morphologyEx(image,image,3,kernel);

源代碼

#include <opencv2\opencv.hpp>  
using namespace cv;
using namespace std;
int main()
{
	Mat frame,imgHSV,image,kernel;
	vector<Mat>temporary;
	int H_W_L = 0, H_W_H = 180;
	int S_W_L = 0, S_W_H = 30;
	int V_W_L = 221, V_W_H = 255;
	VideoCapture capture(1);//讀取視攝像頭實時畫面數(shù)據(jù),0默認(rèn)是筆記本的攝像頭;如果是外接攝像頭,這里改為1
	while (true)
	{
		capture >> frame; //讀取當(dāng)前幀
		
		if (!frame.empty())
		{          //判斷輸入的視頻幀是否為空的
			cvtColor(frame, imgHSV, COLOR_BGR2HSV);
			//threshold(gray, two_value, 125, 255, THRESH_BINARY);//二值圖像
			
			split(imgHSV,temporary);
			equalizeHist(temporary[2], temporary[2]);
			/*equalizeHist(temporary[1], temporary[1]);
			equalizeHist(temporary[0], temporary[0]);*/
			merge(temporary, imgHSV);   //將HSV圖像分割通道,并且做直方圖的均衡化
			inRange(imgHSV, Scalar(H_W_L, S_W_L, V_W_L), Scalar(H_W_H, S_W_H, V_W_H), image);
			kernel = getStructuringElement(MORPH_RECT, Size(3, 3));
			morphologyEx(image,image,2,kernel);
			morphologyEx(image,image,3,kernel);
			imshow("直方圖", imgHSV);
			imshow("原圖",frame);
			imshow("window", image);  //在window窗口顯示frame攝像頭數(shù)據(jù)畫面
		}
		if (waitKey(20) == 'q')   //延時20ms,獲取用戶是否按鍵的情況,如果按下q,會推出程序 
			break;
	}
	capture.release();     //釋放攝像頭資源
	destroyAllWindows();   //釋放全部窗口
	return 0;
}

##結(jié)果

在這里插入圖片描述

到此這篇關(guān)于基于opencv實現(xiàn)視頻中的顏色識別的文章就介紹到這了,更多相關(guān)OpenCV顏色識別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • VC++實現(xiàn)CStdioFile寫入及讀取文件并自動換行的方法

    VC++實現(xiàn)CStdioFile寫入及讀取文件并自動換行的方法

    這篇文章主要介紹了VC++實現(xiàn)CStdioFile寫入及讀取文件并自動換行的方法,很實用的功能,需要的朋友可以參考下
    2014-08-08
  • C++如何實現(xiàn)sha256算法

    C++如何實現(xiàn)sha256算法

    SHA-256算法由于其強大的安全性,已成為國際標(biāo)準(zhǔn)和許多安全協(xié)議的推薦算法,在密碼存儲、數(shù)字簽名、區(qū)塊鏈技術(shù)、SSL/TLS協(xié)議、數(shù)據(jù)完整性驗證、系統(tǒng)安全審計等眾多應(yīng)用領(lǐng)域,SHA-256算法都至關(guān)重要,這篇文章主要介紹了C++如何實現(xiàn)sha256算法,需要的朋友可以參考下
    2024-07-07
  • 關(guān)于STL中set容器的一些總結(jié)

    關(guān)于STL中set容器的一些總結(jié)

    關(guān)于set,必須說明的是set關(guān)聯(lián)式容器。set作為一個容器也是用來存儲同一數(shù)據(jù)類型的數(shù)據(jù)類型,并且能從一個數(shù)據(jù)集合中取出數(shù)據(jù),在set中每個元素的值都唯一,而且系統(tǒng)能根據(jù)元素的值自動進(jìn)行排序
    2013-09-09
  • 雙緩沖解決VC++繪圖時屏幕閃爍

    雙緩沖解決VC++繪圖時屏幕閃爍

    相信很多人在做圖形界面開發(fā)時,常常會遇到屏幕閃爍的情況,當(dāng)然我也不例外,下面我們就來詳細(xì)探討下這個問題的解決辦法
    2015-08-08
  • C語言中指針和數(shù)組試題詳解分析

    C語言中指針和數(shù)組試題詳解分析

    變量存放在內(nèi)存中,內(nèi)存其實就是一組有序字節(jié)組成的數(shù)組,每個字節(jié)有唯一的內(nèi)存地址。CPU 通過內(nèi)存尋址對存儲在內(nèi)存中的某個指定數(shù)據(jù)對象的地址進(jìn)行定位。數(shù)據(jù)對象是指存儲在內(nèi)存中的一個指定數(shù)據(jù)類型的數(shù)值或字符串,它們都有一個自己的地址,指針是保存這個地址的變量
    2021-10-10
  • C語言實現(xiàn)變色進(jìn)度條

    C語言實現(xiàn)變色進(jìn)度條

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)一個變色的進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Mac OS上搭建Apache+PHP+MySQL開發(fā)環(huán)境的詳細(xì)教程

    Mac OS上搭建Apache+PHP+MySQL開發(fā)環(huán)境的詳細(xì)教程

    這篇文章主要介紹了Mac OS上搭建Apache+PHP+MySQL開發(fā)環(huán)境的詳細(xì)教程,包括常見的PHP連接MySQL失敗問題的解決辦法,需要的朋友可以參考下
    2016-01-01
  • C語言代碼實現(xiàn)通訊錄管理系統(tǒng)

    C語言代碼實現(xiàn)通訊錄管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言代碼實現(xiàn)通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++中的friend友元函數(shù)詳細(xì)解析

    C++中的friend友元函數(shù)詳細(xì)解析

    友元可以是一個函數(shù),該函數(shù)被稱為友元函數(shù);友元也可以是一個類,該類被稱為友元類。友元函數(shù)的特點是能夠訪問類中的私有成員的非成員函數(shù)。友元函數(shù)從語法上看,它與普通函數(shù)一樣,即在定義上和調(diào)用上與普通函數(shù)一樣
    2013-09-09
  • C語言的遞歸思想實例分析

    C語言的遞歸思想實例分析

    這篇文章主要介紹了C語言的遞歸思想,以一個實例的形式針對數(shù)據(jù)變化規(guī)律分析了遞歸思想的本質(zhì),需要的朋友可以參考下
    2014-09-09

最新評論

明溪县| 大冶市| 当涂县| 乐昌市| 庄河市| 久治县| 宁都县| 香格里拉县| 黎平县| 双牌县| 堆龙德庆县| 海晏县| 兴国县| 渝中区| 伊通| 义乌市| 内江市| 清水县| 正定县| 北票市| 五河县| 康平县| 微博| 阜新市| 松溪县| 上杭县| 房产| 炉霍县| 淅川县| 左权县| 昭通市| 仁化县| 临猗县| 定边县| 沅江市| 交口县| 大方县| 天津市| 永新县| 阿图什市| 泰安市|