opencv實現(xiàn)顏色檢測
本文實例為大家分享了opencv實現(xiàn)顏色檢測的具體代碼,供大家參考,具體內(nèi)容如下
若要在OPencv 中實現(xiàn)顏色檢測,首先要將待檢測圖像轉(zhuǎn)換到HSV顏色空間中,但因為顏色是一個特定的取值范圍,并且在我們不知情的情況下,只能通過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)入圖形的時候,先要在右邊點擊顯示所有文件!?。? Mat img = imread(path); // 在opencv 中所有的圖像信息都使用Mat // 顏色空間操作一般使用HSV 即 HSV 顏色空間 cvtColor(img, imgHSV, COLOR_BGR2HSV); // 將 img 圖像轉(zhuǎn)換到 HSV 空間中 namedWindow("trackBar",(640,200)); // 創(chuàng)建一個 名為 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ù)用來收集顏色 // 因為在正常情況下某特定顏色并不是一個單調(diào)的值,而是一個取值范圍 // 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); // 此時延時為1 即1ms 換一幀 } return 0; }
運行結(jié)果:
如該運行結(jié)果即檢測淺藍(lán)色圖案。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++構(gòu)造函數(shù)深度學(xué)習(xí)
這篇文章主要為大家詳細(xì)介紹了C++構(gòu)造函數(shù),深度學(xué)習(xí)C++構(gòu)造函數(shù),感興趣的小伙伴們可以參考一下2016-08-08stl常用算法(Algorithms)介紹(stl排序算法、非變序型隊列)
這篇文章主要介紹了stl常用算法(Algorithms)介紹(stl排序算法、非變序型隊列),需要的朋友可以參考下2014-05-05C語言編程銀行ATM存取款系統(tǒng)實現(xiàn)源碼
這篇文章主要為大家介紹了C語言編程銀行ATM存取款系統(tǒng)實現(xiàn)的源碼示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11C++ 十進(jìn)制轉(zhuǎn)換為二進(jìn)制的實例代碼
這篇文章介紹了C++ 十進(jìn)制轉(zhuǎn)換為二進(jìn)制的實例代碼,有需要的朋友可以參考一下2013-10-10詳解如何將Spire.XLS for C++集成到C++程序中
Spire.XLS for C++ 是一個 Excel 庫,供開發(fā)人員在任何類型的 C++ 應(yīng)用程序中操作 Excel 文檔(XLS、XLSX、XLSB 和 XLSM)。 本文演示了如何以兩種不同的方式將 Spire.XLS for C++ 集成到您的 C++ 應(yīng)用程序中2023-03-03