資源簡介
基于opencv,利用hsv顏色空間識別出特定水果,并且根據(jù)水果面積及形狀進(jìn)行篩選,識別出水果,內(nèi)含詳細(xì)備注
代碼片段和文件信息
#include???
#include?“opencv2/highgui/highgui.hpp“??
#include?“opencv2/imgproc/imgproc.hpp“????
using?namespace?cv;??
using?namespace?std;?
int?b;
?Mat?draw(Mat?imagevector?>?contours)
?{
Mat?result(image.size()CV_8UScalar(255));
drawContours(resultcontours-1Scalar(0)1);
return?result;
?}
?void?getContours(Mat?image)
?{??
??Mat?element=getStructuringElement(MORPH_RECTSize(22));
??????erode(imageimageelementPoint(-1-1)1);?????//腐蝕
??//imshow(“腐蝕“image);
??Mat?element1=getStructuringElement(MORPH_RECTSize(22));
??????dilate(imageimageelement1Point(-1-1)10);???//膨脹
??????//imshow(“膨脹“image);
??????Mat?srs3;
??image.copyTo(srs3);//把image復(fù)制給srs3
??//imshow(“hh“srs3);
??vector>?contours;
??findContours(imagecontoursRETR_LISTCHAIN_APPROX_NONE);
??//imshow(“qqq“image);
??????Mat?result(image.size()CV_8UScalar(255));//定義一個空白的圖片
??for(int?i=0;i ??{
???drawContours(resultcontours-1Scalar(0)2);
??}
??????imshow(“ddd“result);
??????size_t?maxSize=0;//存放最大輪廓
???vector?maxContour;
vector>::const_iterator?itc=contours.begin();
???/*????while(itc!=contours.end())
{?
if?(itc->size()?200||?itc->size()?>?3000)
????{
???????????itc?=?contours.erase(itc);???//?刪除當(dāng)前連通域輪廓?250為最小輪廓長?2000為最大輪廓長
????}
else?if(((double)boundingRect(Mat(*itc)).height)/((double)boundingRect(Mat(*itc)).width)>1||
?((double)boundingRect(Mat(*itc)).height)/((double)boundingRect(Mat(*itc)).width)<0.5)
{itc=contours.erase(itc);}
else
{itc++;}???
}*/
?while(itc!=contours.end())
???????{
???????????if(itc->size()>maxSize)
???????????{
???????????????maxSize=itc->size();
???????????????maxContour=*itc;
???????????}
???????????++itc;
???????}
???????itc?=?contours.begin();
???????while(itc!=?contours.end())?
???{?????????????//Eliminate?smaller?contours
????????????if(itc->size()???????????????itc=contours.erase(itc);
??????????????else
?????????????++itc;
???????????}
cout< imshow(“333“draw(imagecontours));//排除了沒有用的信息
?Mat?image_dst=draw(imagecontours).clone();
????Rect*r=new?Rect[contours.
- 上一篇:c++成語接龍代碼.rar
- 下一篇:C++實(shí)現(xiàn)通用鏈表
評論
共有 條評論