opencv實(shí)現(xiàn)顏色檢測(cè)
本文實(shí)例為大家分享了opencv實(shí)現(xiàn)顏色檢測(cè)的具體代碼,供大家參考,具體內(nèi)容如下
若要在OPencv 中實(shí)現(xiàn)顏色檢測(cè),首先要將待檢測(cè)圖像轉(zhuǎn)換到HSV顏色空間中,但因?yàn)轭伾且粋€(gè)特定的取值范圍,并且在我們不知情的情況下,只能通過TrackBar 來控制顏色閾值,用以探究各顏色的取值范圍。
程序:
#include <iostream> #include <opencv2/highgui.hpp> // 說是說gui 具體什么gui 不清楚 #include <opencv2/imgcodecs.hpp> // 圖像頭文件 #include <opencv2/imgproc.hpp> // 圖像處理頭文件 using namespace std; using namespace cv; /// Color Detection /// Mat imgHSV, mask; int hmin = 0, smin = 0, vmin = 0; int hmax = 179, smax = 255, vmax = 255; int main() { string path = "resources/shapes.png"; // 導(dǎo)入圖形的時(shí)候,先要在右邊點(diǎn)擊顯示所有文件?。。? Mat img = imread(path); // 在opencv 中所有的圖像信息都使用Mat // 顏色空間操作一般使用HSV 即 HSV 顏色空間 cvtColor(img, imgHSV, COLOR_BGR2HSV); // 將 img 圖像轉(zhuǎn)換到 HSV 空間中 namedWindow("trackBar",(640,200)); // 創(chuàng)建一個(gè) 名為 trackBar 的窗口 createTrackbar("Hue Min", "trackBar", &hmin, 179); // hmin 即反應(yīng)了當(dāng)前顏色的值 createTrackbar("Hue Max", "trackBar", &hmax, 179); createTrackbar("Sat Min", "trackBar", &smin, 255); createTrackbar("Sat Max", "trackBar", &smax, 255); createTrackbar("Val Min", "trackBar", &vmin, 255); createTrackbar("Val Max", "trackBar", &vmax, 255); // 若要使用 trackBar 則必須使用 while 循環(huán) while (true) { // inRange 函數(shù)用來收集顏色 // 因?yàn)樵谡G闆r下某特定顏色并不是一個(gè)單調(diào)的值,而是一個(gè)取值范圍 // Scalar lower(hmin, smin, vmin); Scalar upper(hmax, smax, vmax); inRange(imgHSV, lower, upper, mask); // inRange 可以搜索范圍在lower 及 upper 之間的顏色 imshow("Image HSV", imgHSV); imshow("Image", img); imshow("Image Mask ", mask); waitKey(1); // 此時(shí)延時(shí)為1 即1ms 換一幀 } return 0; }
運(yùn)行結(jié)果:
如該運(yùn)行結(jié)果即檢測(cè)淺藍(lán)色圖案。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++構(gòu)造函數(shù)深度學(xué)習(xí)
這篇文章主要為大家詳細(xì)介紹了C++構(gòu)造函數(shù),深度學(xué)習(xí)C++構(gòu)造函數(shù),感興趣的小伙伴們可以參考一下2016-08-08C++淺析數(shù)據(jù)在內(nèi)存中如何存儲(chǔ)
使用編程語言進(jìn)行編程時(shí),需要用到各種變量來存儲(chǔ)各種信息。變量保留的是它所存儲(chǔ)的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個(gè)變量時(shí),就會(huì)在內(nèi)存中保留一些空間。您可能需要存儲(chǔ)各種數(shù)據(jù)類型的信息,操作系統(tǒng)會(huì)根據(jù)變量的數(shù)據(jù)類型,來分配內(nèi)存和決定在保留內(nèi)存中存儲(chǔ)什么2022-08-08利用C++ R3層斷鏈實(shí)現(xiàn)模塊隱藏功能
在R3層的模塊隱藏,我們需要做的就是將其該鏈表斷鏈,將某一模塊從這個(gè)雙向鏈表中摘除,這樣再調(diào)用傳統(tǒng)的API時(shí)就會(huì)搜索不到。本文重點(diǎn)給大家介紹利用C++ R3層斷鏈實(shí)現(xiàn)模塊隱藏功能,感興趣的朋友一起看看吧2019-10-10C語言學(xué)習(xí)之標(biāo)識(shí)符的使用詳解
C語言標(biāo)識(shí)符是用于表示變量、函數(shù)、常量、類型等程序元素的名稱,這篇文章將通過一些簡(jiǎn)單的示例為大家介紹一下C語言標(biāo)識(shí)符的使用,需要的可以參考一下2023-05-05stl常用算法(Algorithms)介紹(stl排序算法、非變序型隊(duì)列)
這篇文章主要介紹了stl常用算法(Algorithms)介紹(stl排序算法、非變序型隊(duì)列),需要的朋友可以參考下2014-05-05C語言編程銀行ATM存取款系統(tǒng)實(shí)現(xiàn)源碼
這篇文章主要為大家介紹了C語言編程銀行ATM存取款系統(tǒng)實(shí)現(xiàn)的源碼示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11C++ 十進(jìn)制轉(zhuǎn)換為二進(jìn)制的實(shí)例代碼
這篇文章介紹了C++ 十進(jìn)制轉(zhuǎn)換為二進(jìn)制的實(shí)例代碼,有需要的朋友可以參考一下2013-10-10詳解如何將Spire.XLS for C++集成到C++程序中
Spire.XLS for C++ 是一個(gè) Excel 庫,供開發(fā)人員在任何類型的 C++ 應(yīng)用程序中操作 Excel 文檔(XLS、XLSX、XLSB 和 XLSM)。 本文演示了如何以兩種不同的方式將 Spire.XLS for C++ 集成到您的 C++ 應(yīng)用程序中2023-03-03