opencv之輪廓特徵屬性及應用

2021-08-02 20:34:14 字數 2528 閱讀 3573

1)最小外接矩形

輪廓最小外接矩形–minarearect()

rotatedrect minarearect(inputarray points);

**points :輸入的二維點集,可以填mat 型別或std::vector

**返回值:rotatedrect類矩形物件,外接旋轉矩形主要成員有center,size,angle,points

在opencv中,座標的原點在左上角,與x軸平行的方向為角度0,逆時針旋轉角度是負,順時針旋轉角度是正,而rotatedrect類是以矩形的哪一條邊與x軸的夾角作為角度的呢?angle是水平軸(x軸)逆時針旋轉,與碰到的第乙個邊的夾角,而opencv預設把這個邊的邊長作為width,angle的取值範圍必然是負的

vector

box(contours.size());

point2f rect[4];

for(int i=0;i應用一 :粗略計算長寬(畫素)

應用二 :旋轉矯正

//輪廓最小外接矩形的矩陣 計算長寬

//精度高的話 要用單目測距 雙目測距

void main()

puttext(dstimg.width,point(235,260),cv_font_hershey_complex_small,0.85,scalar(0,255,0),2,8);

puttext(dstimg.height,point(235,285),cv_font_hershey_complex_small,085,scalar(0,255,0),2,8);

} imshow("dst",dstimg);

waitkey(0);

}

//傾斜物體矯正提取

//threshold(srcimg,srcimg,100,255,cv_thresh_binary_inv);//二值化

//adaptivethreshold(srcimg,srcimg,255,aadaptive_thresh_gaussian_c,cv_yhresh_binary_inv,15,3);

imshow("threshoold",srcimg);

mat element=getstructuringelent(moprh_rect,size(11,11),point(-1,-1));

dilate(srcimg,srcimg,element);

imshow("dilate",srcimg);

erode(srcimg,srcimg,element);

imshow("erode",srcimg); //做完膨脹做的腐蝕 用一樣的核

vector

boundrect(contours.size());

vector

box(contours.size());

point2f rect[4];

for(int i=0;iif(box[i].size,width<100||box[i].size.height<100)

continue;//設定範圍

circle(dstimg,point(box[i].center.x,box[i],center.y),5,scalar(0,255,0),-1,8);

count<<"num="

sprintf(width,"width=%0.2f",box[i].size.width);

sprintf(height,"height=%0.2f",box[i].size.height);

box[i].points(rect);

rectangle(dstimg,point(boundrect[i].x,boundrect[i].y),point(boundrect[i].x+boundrect[i].width,boundrect[i].y+boundrect[i].height));

}//經驗值

if(0

angle=angle;

else

if(45

angle=90-abs(angle);

point2f center=box[i].center;//定義旋轉中心座標

double angle0=angle;

double scale=1;

mat roatem;

roatem=getrotationmateix2d(center,angle0,scale);//獲得旋轉矩陣

warpaffine((dstimg,dstimg,roatem,dstimg.size());//利用放射變換進行旋轉

//另一種方法,透視變換

opencv 輪廓屬性

1.aspect ratio寬與高之比 cv2 boundingrect cnt 2.extent 目標面積 佔 邊界矩形框 的比例area cv2.contourarea cnt x,y,w,h cv2.boundingrect cnt rect area w h extent float are...

opencv 輪廓特徵2

函式 moments moments inputarray array,bool binaryimage false 用來計算多邊形或珊格形狀的0 3階矩。moments類定義如下 classmoments mxx是0 3階矩,muxx是0 3階中心矩,nuxx是0 3階歸一化中心矩,公式如下 當計...

OpenCV 輪廓基本特徵

一 概述 我們通過cvfindcontours 函式獲取得影象輪廓有何作用呢?一般來說,我們對輪廓常用的操作有識別和處理,另外相關的還有多種對輪廓的處理,如簡化或擬合輪廓,匹配輪廓到模板,等等。我們在輪廓處理中經常需要對輪廓變化一些特徵進行概括,比如長度或者一些反映輪廓整體大小的度量。另外輪廓矩也是...