• hough变换及OpenCVAPI


    参考:https://blog.csdn.net/qq_15971883/article/details/80583364 

     

    image: 必须是二值图像,推荐使用canny边缘检测的结果图像; 
    rho: 线段以像素为单位的距离精度,double类型的,推荐用1.0 
    theta: 线段以弧度为单位的角度精度,推荐用numpy.pi/180 
    threshod: 累加平面的阈值参数,int类型,超过设定阈值才被检测出线段,值越大,基本上意味着检出的线段越长,检出的线段个数越少。根据情况推荐先用100试试
    lines:这个参数的意义未知,发现不同的lines对结果没影响,但是不要忽略了它的存在 
    minLineLength:线段以像素为单位的最小长度,根据应用场景设置 
    maxLineGap:同一方向上两条线段判定为一条线段的最大允许间隔(断裂),超过了设定值,则把两条线段当成一条线段,值越大,允许线段上的断裂越大,越有可能检出潜在的直线段

    #include <opencv2/opencv.hpp>
    #include <iostream>
    #include <math.h>
    #include <vector>
    using namespace cv;
    using namespace std;
    
    Mat src, dst,dst2,gray_src;
    char* INPUT_WIN = "input image";
    char* OUTPUT_WIN = "binary image";
    int t1_value = 50;
    int max_value = 255;
    
    
    
    
    int main()
    {
    
        src = imread(".//pic//LDW.bmp");
    
        namedWindow(INPUT_WIN, CV_WINDOW_AUTOSIZE);
        imshow(INPUT_WIN, src);
    
        Mat src_gray;
        Canny(src, src_gray, 100, 200);
        cvtColor(src_gray, dst, CV_GRAY2BGR);
        imshow("edge image", src_gray);
    
        vector<Vec4f> plines;
        HoughLinesP(src_gray, plines, 1, CV_PI / 180.0, 50, 20, 10);
        Scalar color = Scalar(0,0,255);
        for (size_t i = 0; i < plines.size(); i++)
        {
            Vec4f hline = plines[i];
            line(dst, Point(hline[0], hline[1]), Point(hline[2], hline[3]), color, 3, LINE_AA);
        }
    
        imshow("直线检测", dst);
    
        waitKey(0);
        return 0; 
    }
  • 相关阅读:
    .NET下的加密解密大全(1): 哈希加密
    orm fluentdata使用相关文章
    xml处理相关文章收藏
    Salty Fish(区间和)
    Fennec VS. Snuke
    Splitting Pile
    ST表(离线RMQ)
    Exponentiation(高精度大数)
    高斯消元(模板)
    Online Judge(字符串-格式)
  • 原文地址:https://www.cnblogs.com/xiaochi/p/12022127.html
Copyright © 2020-2023  润新知