OpenCV Hough Line变换
生活随笔
收集整理的這篇文章主要介紹了
OpenCV Hough Line变换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
API
Probabilistic Hough Line變換(概率霍夫線變換)vector<Vec4i> lines;
HoughLinesP(dst, lines, 1, CV_PI/180, 50, 50, 10 );dst:邊緣檢測器的輸出。它應該是一個灰度圖像(盡管事實上它是二進制的)
行:將存儲檢測到的行的參數的(xstart,ystart,xend,yend)
rho:參數的分辨率(以像素為單位)。我們使用1像素。r
theta:以弧度表示的參數的分辨率。我們使用1度(CV_PI / 180)θ
threshold:將“* detect *”一行的最小交點數
minLinLength:可以形成一行的最小點數。小于這個點數的行被忽略。
maxLineGap:在同一行中考慮的兩點之間的最大差距。?
代碼
#include <opencv2/core.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>
#include<vector>
#include <iostream>
using namespace std;
using namespace cv;
Mat src = imread("3.png",IMREAD_GRAYSCALE);
int thresh = 50;
int line_length = 10;
int line_distance = 5;void on_canny(int, void*)
{Mat dst;//去模糊GaussianBlur(src, src, Size(3, 3), 0, 0);Canny(src, dst, thresh, 2*thresh, 3);vector<Vec4i>lines;HoughLinesP(dst, lines, 1, CV_PI / 180, 50, line_length, line_distance);for (int i = 0; i < lines.size(); i++){Vec4i l = lines[i];line(dst, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(0, 0, 255), 1, 8, 0);}imshow("dst", dst);
}int main()
{if (!src.data){cout << "圖片讀入失敗" << endl;return -1;}namedWindow("原圖", WINDOW_FREERATIO);imshow("原圖",src);createTrackbar("閾值", "原圖",&thresh, 120, on_canny);createTrackbar("規定線長", "原圖", &line_length, 60, on_canny);createTrackbar("規定兩線距離", "原圖", &line_distance, 15, on_canny);on_canny(0, 0);waitKey(0);return 0;
}
?
?
總結
以上是生活随笔為你收集整理的OpenCV Hough Line变换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV制作自己的线性滤镜
- 下一篇: 直方图(opencv)