opencv筆記 霍夫變換

2021-08-20 08:31:54 字數 2123 閱讀 4381

霍夫變化

opencv霍夫變化

/*

opencv中的霍夫直線檢測的函式為houghlines

改進版本的houghlinesp函式(統計概論霍夫直線檢測)

*/void houghlines(

inputarray image, //輸入8-位元、單通道 (二值) 影象

outputarray lines, //輸出的角度和r長度: lines為輸出直線向量,兩個元素的向量(ρ,θ)代表一條直線,ρ是從原點(影象的左上角)的距離,θ是直線的角度(單位是弧度),0表示垂直線,π/2表示水平線

double rho, //與畫素相關單位的距離精度

double theta, //弧度測量的角度精度

int threshold, //閾值引數。如果相應的累計值大於 threshold, 則函式返回的這個線段.

double srn=0, double stn=0

//多尺度變換,距離精度 rho 的分母,角度精度 theta 的分母。

);

// 通過統計概率的霍夫線變換找到線段

void houghlinesp(

inputarray image, //輸入 8-位元、單通道 (二值) 影象

outputarray lines, //輸出線段的兩個端點,儲存為(x_1, y_1, x_2, y_2)

double rho, //與象素相關單位的距離精度,((width + height) * 2 + 1) / rho 表示r的空間範圍,一般取1

double theta, //弧度測量的角度精度,(cv_pi/theta)表示霍夫空間角度方向的大小

int threshold, //閾值引數。如果相應的累計值大於 threshold, 則函式返回的這個線段.

double minlinelength=0, //最小的線段長度

double maxlinegap=0

//這個引數表示在同一條直線上進行碎線段連線的最大間隔值(gap), 即當同一條直線上的兩條碎線段之間的間隔小於maxlinegap時,將其合二為一

);

#include "opencv2/imgcodecs.hpp"

#include "opencv2/highgui.hpp"

#include "opencv2/imgproc.hpp"

#include

using

namespace cv;

using

namespace

std;

static

void help()

int main(int argc, char** argv)

" );

if (parser.has("help"))

string filename = parser.get("@image");

if (filename.empty())

mat src = imread(filename, 0);

if(src.empty())

mat dst, cdst;

canny(src, dst, 50, 200, 3);

cvtcolor(dst, cdst, color_gray2bgr);

#if 0

vector

lines;

houghlines(dst, lines, 1, cv_pi/180, 100, 0, 0 );

for( size_t i = 0; i < lines.size(); i++ )

#else

vector

lines;

houghlinesp(dst, lines, 1, cv_pi/180, 50, 50, 10 );

for( size_t i = 0; i < lines.size(); i++ )

#endif

imshow("source", src);

imshow("detected lines", cdst);

waitkey();

return

0;}

OpenCV 霍夫線變換 霍夫圓變換

關於霍夫變換在官方文件opencv249裡的描述如下 api如下 void houghlines inputarray image,outputarray lines,double rho,double theta,int threshold,double srn 0,double stn 0 vo...

opencv 霍夫圓變換

參考 1 官方文件api 2 d6 d00 tutorial py root.html 官方英文教程 3 4 高階教程 5 官方英文教程 6 7 8 opencv論壇 9 官方github 10 注 安裝的版本 opencv python 3.3.0 cp36 cp36m win amd64.whl...

Opencv 霍夫變換 直線

注意 下面的解釋屬於bradski和kaehler 的 學習opencv 一書。hough line變換是用於檢測直線的變換。為了應用變換,首先需要邊緣檢測預處理。如你所知,影象空間中的一行可以用兩個變數表示。例如 在笛卡爾座標系中 引數 m,b 在極座標系中 引數 r,對於hough 變換,我們將...