霍夫直线检测(HoughLinesP)
1、霍夫直线检测
霍夫直线检测的前提是已经完成图像的边缘检测,主要是完成直线从平面坐标空间到极坐标空间的转换。
2、代码实现
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
Mat img = imread("G:/testpic/img.png");
if (!img.data)
{
printf("cannot load the image");
return -1;
}
namedWindow("input", WINDOW_AUTOSIZE);
imshow("input", img);
//边缘检测
Mat img_gray, dst;
Canny(img, img_gray, 180, 200, 3);
imshow("gray", img_gray);
cvtColor(img_gray, dst, COLOR_GRAY2BGR);
//霍夫直线检测
vector<Vec4f> plines;
Scalar color = Scalar(0,0,255);
HoughLinesP(img_gray, plines, 1.0, CV_PI / 180.0, 10, 0, 7);
for (size_t i = 0; i < plines.size(); i++)
{
Vec4f hlines = plines[i];
line(dst, Point(hlines[0], hlines[1]), Point(hlines[2], hlines[3]), color, 3, LINE_AA);
}
imshow("output", dst);
waitKey(0);
return 0;
}