這篇文章將為大家詳細講解有關opencv怎么識別圖片上帶顏色的圓,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)是一家專業(yè)提供永新企業(yè)網(wǎng)站建設,專注與成都網(wǎng)站設計、做網(wǎng)站、H5技術、小程序制作等業(yè)務。10年已為永新眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進行中。opencv識別圖片上帶顏色的圓的具體代碼,具體內容如下
識別帶顏色的圓,首先需要先查詢該顏色的HSV值,下圖部分紫色歸為紅色了:
比如紅色:
//紅色的HSV值 int low_H = 0,low_S = 123,low_V = 100; int High_H = 5,High_S = 255,High_V = 255;
然后將圖片從BGR轉化成HSV,接著二值化:
cvtColor(image,src,COLOR_BGR2HSV); //從BGR-> HSV inRange(src,Scalar(low_H,low_S,low_V),Scalar(High_H,High_S,High_V),src); //二值化
如果有噪聲可以去噪(這一步可以沒有):
GaussianBlur(src,src,Size(5,3 ),2,2);
接著用HoughCircles來找圓,后面的參數(shù)可以根據(jù)需要自己設置:
HoughCircles(src,circles,CV_HOUGH_GRADIENT,1,50,15,7,10,30); //找圓,最后兩個參數(shù)是圓半徑范圍,20是最小圓半徑,30是大圓半徑
HoughCircles介紹:
HoughCircles(image,method,dp,minDist [,circles [,param1 [,param2 [,minRadius [,maxRadius]]]]])
完整代碼:
#include <iostream> #include <vector> #include <limits> #include <opencv2/opencv.hpp> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <string> #include <math.h> #include <iomanip> #include <cstdio> #pragma comment (lib, "opencv_core2413d.lib") #pragma comment (lib, "opencv_highgui2413d.lib") #pragma comment (lib, "opencv_imgproc2413d.lib") #pragma comment (lib, "opencv_video2413d.lib") #pragma comment (lib, "opencv_features2d2413d.lib") using namespace std; using namespace cv; void drawCircle(Mat &input, const vector<Vec3f> &circles); int main(){ Mat image, src;//加載進來的圖片 vector<Vec3f> circles;//識別出來的圓,每一行是一個圓,第一列是圓心的x坐標,第二列是圓心的y坐標,第三列是圓的半徑 image = imread("D:/code/map3.png"); Mat result = imread("D:/code/map3.png");//結果圖 //紅色的HSV值 int low_H = 0,low_S = 123,low_V = 100; int High_H = 5,High_S = 255,High_V = 255; cvtColor(image, src, COLOR_BGR2HSV);//從BGR->HSV inRange(src, Scalar(low_H, low_S, low_V), Scalar(High_H, High_S, High_V), src);//二值化 //Reduce the noise so we avoid false circle detection GaussianBlur(src, src, Size(5, 3), 2, 2); HoughCircles(src, circles, CV_HOUGH_GRADIENT, 1, 50, 15, 7,10,30);//找圓,最后兩個參數(shù)是圓半徑范圍,20是最小圓半徑,30是大圓半徑 drawCircle(result, circles);//畫圓 namedWindow("Display window1", WINDOW_NORMAL);//展示結果 namedWindow("Display window2", WINDOW_NORMAL); resizeWindow("Display window1", 1240, 680); resizeWindow("Display window2", 1240, 680); imshow("Display window1", image); imshow("Display window2", result); waitKey(0); return 0; } void drawCircle(Mat &input, const vector<Vec3f> &circles){ for (int i = 0; i<circles.size(); i++){ Point center(cvRound(circles[i][0]), cvRound(circles[i][1])); int radius = cvRound(circles[i][2]); circle(input, center, radius, Scalar(255, 0, 0), 3, 8, 0); } }
關于“opencv怎么識別圖片上帶顏色的圓”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站www.rwnh.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
分享題目:opencv怎么識別圖片上帶顏色的圓-創(chuàng)新互聯(lián)
鏈接分享:http://www.rwnh.cn/article16/ccijdg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、云服務器、網(wǎng)站排名、ChatGPT、關鍵詞優(yōu)化、網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容