




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第C++利用Opencv實現(xiàn)多個圓形檢測主要是利用霍夫圓檢測、面積篩選等完成多個圓形檢測,具體代碼及結果如下。
第一部分是頭文件(common.h):
#pragmaonce
#includeopencv2/opencv.hpp
#includeopencv2/highgui.hpp
#includeiostream
usingnamespacestd;
usingnamespacecv;
externMatsrc;
voidimageBasicInformation(Matsrc);//圖像基本信息
constMathoughCirclePre(MatsrcPre);//霍夫圓檢測預處理
voidhoughCircle(MatsrcPreHough);//霍夫圓檢測
constMatRectCirclePre(MatsrcPre);//面積篩選擬合圓的預處理
voidAreaCircles(MatAreaInput);//面積篩選擬合圓檢測
第二部分是主函數(shù):
#include"common.h"
Matsrc;
intmain()
src=imread("1.jpg",1);
if(src.empty())
cout"圖像不存在!"endl;
else
namedWindow("原圖",1);
imshow("原圖",src);
imageBasicInformation(src);
MatsrcPreHough=houghCirclePre(src);
houghCircle(srcPreHough);
MatRectCir=RectCirclePre(src);
AreaCircles(RectCir);
waitKey(0);
destroyAllWindows();
return0;
}
第三部分為霍夫圓檢測函數(shù)(hough.cpp)
主要包括輸出圖像的基本信息函數(shù):voidimageBasicInformation(Matsrc)
霍夫圓檢測預處理函數(shù):constMathoughCirclePre(MatsrcPre)
霍夫圓檢測函數(shù):voidhoughCircle(MatsrcPreHough)
#include"common.h"
MatgraySrc,srcPre;//灰度圖,霍夫檢測預處理,
Matthreshold_grayaSrc;//二值化圖
Materode_threshold_graySrc,dilate_threshold_graySrc;//二值化后腐蝕,二值化后膨脹
voidimageBasicInformation(Matsrc)
intcols=src.cols;
introws=src.rows;
intchannels=src.channels();
cout"圖像寬為:"colsendl;
cout"圖像高為:"rowsendl;
cout"圖像通道數(shù):"channelsendl;
constMathoughCirclePre(MatsrcPre)
doublehoughCirclePreTime=static_castdouble(getTickCount());
cvtColor(srcPre,graySrc,COLOR_BGR2GRAY);
GaussianBlur(graySrc,graySrc,Size(3,3),2,2);//濾波
threshold(graySrc,threshold_grayaSrc,150,255,1);//二值化
Matelement=getStructuringElement(MORPH_RECT,Size(15,15));
dilate(threshold_grayaSrc,dilate_threshold_graySrc,element);//膨脹
erode(dilate_threshold_graySrc,erode_threshold_graySrc,element);//腐蝕
houghCirclePreTime=((double)getTickCount()-houghCirclePreTime)/getTickFrequency();
cout"霍夫圓預處理時間為:"houghCirclePreTime"秒"endl;
returnerode_threshold_graySrc;
voidhoughCircle(MatsrcPreHough)
cout"進入霍夫圓檢測"endl;
vectorVec3fcircles;
HoughCircles(srcPreHough,circles,HOUGH_GRADIENT,1,60,1,35,0,0);
cout"圓的個數(shù)"circles.size()endl;
for(size_ti=0;icircles.size();i++)
Pointcenter(cvRound(circles[i][0]),cvRound(circles[i][1]));
intradius=cvRound(circles[i][2]);
circle(src,center,3,Scalar(0,255,0),-1,8,0);//畫圓心
circle(src,center,radius,Scalar(0,0,255),3,8,0);//畫圓
namedWindow("霍夫檢測結果",0);
imshow("霍夫檢測結果",src);
imwrite("霍夫圓檢測結果.jpg",src);//保存檢測結果
}
第四部分為利用面積篩選擬合圓檢測(AreaCircle.cpp)
主要包括預處理函數(shù):constMatRectCirclePre(MatsrcPre)
面積篩選擬合圓檢測函數(shù):voidAreaCircles(MatAreaInput)
#include"common.h"
MatgraySrcArea,thresholdGraySrc;//灰度圖像,二值化圖像
MatdilateThresholdGraySrc,erodeThresholdGraySrc;//二值化后膨脹圖像,膨脹之后的腐蝕圖像
constMatRectCirclePre(MatsrcPre)
cvtColor(srcPre,graySrcArea,COLOR_BGR2GRAY);
GaussianBlur(graySrcArea,graySrcArea,Size(3,3),2,2);
threshold(graySrcArea,thresholdGraySrc,100,255,1);//二值化,閾值要根據(jù)自己的圖像自己調整
Matelement=getStructuringElement(MORPH_RECT,Size(15,15));
dilate(thresholdGraySrc,dilateThresholdGraySrc,element);//膨脹
erode(dilateThresholdGraySrc,erodeThresholdGraySrc,element);//腐蝕
returnerodeThresholdGraySrc;
voidAreaCircles(MatAreaInput)
vectorvectorPointRectContours;
vectorVec4iHierarchy;
findContours(AreaInput,RectContours,Hierarchy,RETR_TREE,CHAIN_APPROX_SIMPLE,Point(0,0));
Matdrawing=Mat::zeros(src.size(),CV_8UC3);
for(inti=0;iRectContours.size();i++)
doublearea=contourArea(RectContours[i]);
coutareaendl;//輸出所有計算出來的面積,方便下一步設置閾值
if(area15000area100000)//根據(jù)上一步計算的閾值設置范圍
drawContours(drawing,RectContours,i,Scalar(0,255,0),2,8,Hierarchy,0,Point());
RotatedRectRect=fitEllipse(RectContours[i]);
circle(src,Rect.center,2,Scalar(0,255,0),2,8,0);//在原圖畫出圓心
ellipse(sr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 石家莊智能終端產(chǎn)品項目商業(yè)計劃書
- 強化廣州日報育兒平臺,進入線下嬰童市場計劃書商業(yè)計劃書集團
- 美業(yè)員工入股合同協(xié)議書
- 破產(chǎn)創(chuàng)業(yè)方案
- 螃蟹養(yǎng)殖合同協(xié)議書模板
- 食堂搭伙合同協(xié)議書模板
- 找工作合同協(xié)議書怎么寫
- 學校教師用工合同協(xié)議書
- 創(chuàng)業(yè)計劃書范文服裝店
- 機械租賃合同終止協(xié)議書
- 人才盤點與人才儲備計劃設計合同
- 醫(yī)美公司保密協(xié)議書
- 2025屆浙江省嘉興市高三9月基礎測試-數(shù)學(含答案)
- 2025年入團考試時事熱點及試題與答案
- (2025)保密觀題庫及答案
- 中華人民共和國民營經(jīng)濟促進法
- 2024年山東省濟南市中考地理試題卷(含答案解析)
- 電大信息技術應用終結性作業(yè)
- JJG 162-2019飲用冷水水表 檢定規(guī)程(高清版)
- 分組與分配問題.doc
- 高等學校畢業(yè)生登記表(適于江蘇省,完整版)
評論
0/150
提交評論