【20160924】GOCVHelper 图像处理部分(2)
生活随笔
收集整理的這篇文章主要介紹了
【20160924】GOCVHelper 图像处理部分(2)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
//根據(jù)輪廓的面積大小進行選擇 ????vector<VP>??selectShapeArea(Mat?src,Mat&?draw,vector<VP>?contours,int?minvalue,int?maxvalue){ ????????vector<VP>?result_contours; ????????draw?=?Mat::zeros(src.rows,src.cols,CV_8UC3); ????????for?(int?i=0;i<contours.size();i++){? ????????????double?countour_area?=?contourArea(contours[i]); ????????????if?(countour_area?>minvalue?&&?countour_area<maxvalue) ????????????????result_contours.push_back(contours[i]); ????????} ????????for?(int?i=0;i<result_contours.size();i++){ ????????????int?iRandB?=?rng.uniform(0,255); ????????????int?iRandG?=?rng.uniform(0,255); ????????????int?iRandR?=?rng.uniform(0,255); ????????????Scalar??color??=?Scalar(iRandB,iRandG,iRandR); ????????????drawContours(draw,result_contours,i,color,-1); ????????????char?cbuf[100];sprintf_s(cbuf,"%d",i+1); ????????????//尋找最小覆蓋圓,求出圓心。使用反色打印輪廓序號 ????????????float?radius; ????????????cv::Point2f?center; ????????????cv::minEnclosingCircle(result_contours[i],center,radius); ????????????putText(draw,cbuf,center,?FONT_HERSHEY_PLAIN?,5,Scalar(255-iRandB,255-iRandG,255-iRandR),5); ????????} ????????return?result_contours; ????} ????vector<VP>??selectShapeArea(vector<VP>?contours,int?minvalue,int?maxvalue) ????{ ????????vector<VP>?result_contours; ????????for?(int?i=0;i<contours.size();i++){? ????????????double?countour_area?=?contourArea(contours[i]); ????????????if?(countour_area?>minvalue?&&?countour_area<maxvalue) ????????????????result_contours.push_back(contours[i]); ????????} ????????return?result_contours;
????}
在Halcon中,運用非常廣泛的SelectShape的Opencv實現(xiàn),能夠根據(jù)輪廓的大小,直接挑選出所需要的部分。我在這個基礎上進行了強化,能夠把每個輪廓的序號標注出來。并且依然提供draw打印。總結
以上是生活随笔為你收集整理的【20160924】GOCVHelper 图像处理部分(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux个人常用命令备注
- 下一篇: 麻省:第9讲