cvHoughLines2 霍夫線變換

2021-07-09 18:08:32 字數 1222 閱讀 8775

霍夫線變換可以在灰度圖中找到線段

函式原型:

cvapi(cvseq*)  cvhoughlines2( cvarr* image, void* line_storage, int method,

double rho, double theta, int threshold,

double param1 cv_default(0), double param2 cv_default(0));

image,影象(必須是8位的)

line_storage,記憶體塊

method,選擇sht(標準霍夫變換)或者ppht(累計概率霍夫變換)

rho,解析度(單位:畫素)

theta,解析度(單位:弧度)

threshold,認定為一條直線時在累計平面中必須達到的值

ppht才用到param1和param2兩個引數

param1,將要返回直線的最小長度

param2,設定為一條直線上分離線段不能練成一條直線的分隔畫素點數

思路:1.先將3通道的bgr彩圖模糊化,次數根據實際需要而定

2.將模糊所得的圖轉為單通道灰度圖

3.用cvcanny函式把邊界提取出來

4.用cvhoughlines2函式提取直線

5.畫出提取出來的直線

測試用圖:

程式**:

#include #include#include using namespace std;

int main()

cvnamedwindow("img_out",cv_window_autosize);

cvshowimage("img_out",img_out);

cvwaitkey(0);

cvdestroyallwindows();

cvreleaseimage(&img_in);

cvreleaseimage(&img_temp);

cvreleaseimage(&img_canny);

cvreleaseimage(&img_out);

return 0;

}

執行結果:

缺點 霍夫圓 霍夫變換

霍夫變換是一種特徵提取,被廣泛應用在影象分析 電腦視覺以及數字影像處理。霍夫變換是用來辨別找出物件中的特徵,例如 線條。他的演算法流程大致如下,給定乙個物件 要辨別的形狀的種類,演算法會在引數空間中執行投票來決定物體的形狀,而這是由累加空間 accumulator space 裡的區域性最大值來決定...

霍夫檢測圓 霍夫梯度法

承接上篇博文,在基本搞懂霍夫檢測直線是怎麼進化到檢測圓後,開始 痴心妄想 自己寫 了!雖說最後的效果不是很好,但是重要的是在碼 過程中發現和解決的一些問題 不一定有共性,但兄弟萌可以避免下這些bug 上篇博文已經闡述了我們是如何從三維計數 轉到霍夫梯度法的,該演算法主要分為兩步,先找圓心疑似點,再對...

缺點 霍夫圓 霍夫圓變換

對於直線來說,一條直線能有引數極徑級角表示,而對圓來說我們需要三個引數來表示乙個圓 在opencv中,我們常常通過乙個叫 霍夫梯度法 的方法來解決圓變換的問題。霍夫梯度法的原理 1 首先對影象應用邊緣檢測,比如canny邊緣檢測 2 然後對邊緣影象中的每乙個非零點,考慮其區域性梯度,即用sobel函...