OpenCV筆記(二十八)凸包

2021-10-04 21:59:14 字數 1770 閱讀 5370

二、相關api

三、處理步驟

四、綜合例程

convex hull

什麼是凸包,在乙個多變形邊緣或者內部任意兩個點的連線都包含在多邊形邊界或者內部。

正式定義:

包含點集合s中所有點的最小凸多邊形稱為凸包

inputarray points,// 輸入候選點,來自findcontours

outputarray hull,// 凸包

bool clockwise,// default true, 順時針方向

bool returnpoints)// true 表示返回點個數,如果第二個引數是vector則自動忽略

首先把影象從rgb轉為灰度

然後再轉為二值影象

在通過發現輪廓得到候選點

凸包api呼叫

繪製顯示。

#include #include #include using namespace std;

using namespace cv;

mat src, src_gray, dst;

int threshold_value = 100;

int threshold_max = 255;

const char* output_win = "convex hull demo";

void threshold_callback(int, void*);

rng rng(12345);

int main(int argc, char** ar**)

const char* input_win = "input image";

namedwindow(input_win, cv_window_autosize);

namedwindow(output_win, cv_window_normal);

const char* trackbar_label = "threshold : ";

cvtcolor(src, src_gray, cv_bgr2gray);

blur(src_gray, src_gray, size(3, 3), point(-1, -1), border_default);

imshow(input_win, src_gray);

createtrackbar(trackbar_label, output_win, &threshold_value, threshold_max, threshold_callback);

threshold_callback(0, 0);

waitkey(0);

return 0;

}void threshold_callback(int, void*)

// 繪製

dst = mat::zeros(src.size(), cv_8uc3);

vectorempty(0);

for (size_t k = 0; k < contours.size(); k++)

imshow(output_win, dst);

return;

}

二十八 模組

模組 在電腦程式的開發過程中,隨著程式 越寫越多,在乙個檔案裡 就會越來越長,越來越不容易維護。為了編寫可維護的 我們把很多函式分組,分別放到不同的檔案裡,這樣,每個檔案包含的 就相對較少,很多程式語言都採用這種組織 的方式。在python中,乙個.py檔案就稱之為乙個模組 module 使用模組有...

Lua程式設計(二十八)

lua語言會在執行源 之前先對其進行預編譯。生成預編譯檔案 也被稱為二進位制檔案,binary chunk 的最簡單方式是,使用標準發行班中附帶的luac程式。luac o prog.lc prog.lua上述命令會建立檔案prog.lua的預編譯版本prog.lc。lua解析器會像執行普通lua ...

CUDA學習(二十八)

多處理器級別 在更低層次上,應用程式應該最大化多處理器內各個功能單元之間的並行執行 如 硬體多執行緒 中所述,gpu多處理器依賴於執行緒級並行性來最大限度地利用其功能單元。因此利用率與駐留經線的數量直接相關。在每個指令發布時間,乙個warp排程器選擇乙個準備好執行下乙個指令的warp 如果有的話 然...