OpenCv C 凸包操作

2021-09-02 05:53:36 字數 1650 閱讀 3445

什麼是凸包?簡單點就是在一幅影象裡面有很多點,而有一些點連成的形狀能夠把所有點包圍進去。

使用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...