什麼是凸包?簡單點就是在一幅影象裡面有很多點,而有一些點連成的形狀能夠把所有點包圍進去。
使用opencv怎麼做?
1、先將轉化為灰度影象;
2、轉化為二值影象;
3、找到的全部輪廓點;
4、使用凸包api從全部輪廓點中找到最優輪廓點;
5、連線凸包輪廓點
凸包使用的api是convexhull()
下面看**:
#include
#include
#include
using
namespace cv;
using
namespace std;
mat src,dst,gray_src;
int threshold_value =
100;
int threshold_max =
255;
void
convexhull
(int
,void*)
;int
main
(int argc,
char
** argv)
blur
(src, src,
size(3
,3),
point(-
1,-1
), border_default)
;cvtcolor
(src, gray_src, cv_bgr2gray)
;imshow
("input img"
, gray_src)
;namedwindow
("convexhull title"
,cv_window_autosize)
;createtrackbar
("move"
,"convexhull title"
,&threshold_value, threshold_max, convexhull)
;convexhull(0
,0);
waitkey(0
);return0;
}void
convexhull
(int
,void*)
//繪製輪廓點
dst = mat::
zeros
(src.
size()
, cv_8uc3)
;//影象必須是3通道
vector
empty(0
);for(size_t k =
0; k < contours.
size()
; k++
)imshow
("convexhull title"
, dst)
;}
執行結果
OpenCV(C )操作畫素總結
opencv中提供了許多操作影象的函式,但是有時候我們需要直接操作畫素來實現我們的功能,這篇文章總結了opencv中常見的操作畫素的方法。不同的影象有不同的畫素型別,不過對於不同的畫素型別,需要在模板引數傳入不同的值。首先畫素的資料型別包括cv 32u,cv 32s,cv 32f,cv 8u,cv ...
BZOJ3348 Cows 凸包 凸包面積
題目鏈結 題意 求凸包,求面積,然後給面積除以50,向下取整。用的andrew演算法,即跑兩次,先求出下凸包,然後再求出上凸包。求面積時候應該用凸包陣列求,結果寫成了原來的點的陣列,調了20多分鐘。弱智 2 telekinetic forest guard include include inclu...
poj1113 求凸包 計算凸包周長
經典的求凸包題,模板題。要求用資源最少,那肯定這個多邊形是個凸多邊形,也就是凸包。所以先求出凸包,計算它的周長。還有就是這道題所說的,要離城牆l遠,其實就是在加上乙個圓的周長,圓的半徑就是l。都說到這了,這道題還差什麼?還差乙個經典的凸包模板!哈哈 如下 include include includ...