OpenCV 직선 적합 실현

3122 단어 OpenCV직선 적합
직선 검 측 에 비해 직선 적합 의 가장 큰 특징 은 모든 데 이 터 를 하나의 직선 으로 만 맞 추 는 것 이다.

void fitLine( InputArray points, OutputArray line, int distType,
                           double param, double reps, double aeps );
  • points:의합 직선 에 있 는 2D 또는 3D 점 집합 을 입력 하 십시오
  • line:직선 을 묘사 하 는 매개 변 수 를 출력 하고 2D 점 집합 설명 파 라 메 터 는 Vec4f 유형 이 며 3D 점 집합 설명 파 라 메 터 는 Vec6f 유형 입 니 다
  • distType:M-estimator 알고리즘 이 사용 하 는 거리 유형 표 지 는 선택 할 수 있 는 거리 유형 은 표 7-1 에서 제시 합 니 다
  • param:일부 유형의 거리의 수치 파라미터(C).수치 가 0 이면 자동 으로 최 적 치 를 선택 합 니 다
  • 4.567917.reps:좌표 원점 과 직선 간 의 거리 정밀도,수치 0 은 자가 적응 파 라 메 터 를 선택 하고 보통 0.01 을 선택한다
  • aeps:직선 각도 정밀도,수치 0 은 자가 적응 파 라 메 터 를 선택 하고 보통 0.01 을 선택한다.
  • 이 함 수 는 최소 이승 법 을 이용 하여 모든 점 에서 가장 작은 직선 을 만 들 고 직선 적 인 묘사 형식 은 점 경사 식 으로 바 꿀 수 있다.함수 의 첫 번 째 매개 변 수 는 직선 에 적합 한 2D 또는 3D 점 집합 으로 vector<>또는 Mat 형식의 변수 에 값 을 부여 할 수 있 습 니 다.함수 두 번 째 매개 변 수 는 직선 에 맞 는 설명 매개 변수 입 니 다.2D 점 집합 이 라면 출력 량 은 Vec4f 형식(vx)입 니 다. vy x0 y0),그 중(vx vy)는 직선 과 공 선 된 정규 화 벡터 이다.(x0 y0)의합 직선 상의 임 의적 인 점 으로 이 네 가지 양 에 따라 2 차원 평면 직선 의 점 경사 식 해석 식 을 계산 할 수 있 고 형식 은 식 과 같다.

    입력 매개 변수 가 3D 점 집합 이 라면 출력 량 은 Vec6f 형식(vx)입 니 다. vy vz x0 y0 z0),그 중(vx vy vz)는 직선 과 공 선 된 정규 화 벡터 이다.(x0) y0 z0)직선 상의 임 의적 인 점 을 의합 하 는 것 이다.함수 세 번 째 매개 변 수 는 M-estimator 알고리즘 이 사용 하 는 거리 유형 표지 로 선택 할 수 있 는 거리 유형 은 표 에서 제시 합 니 다.함수 네 번 째 매개 변 수 는 일부 거리 유형의 수치 매개 변수 C 입 니 다.수치 0 이 최 적 치 를 선택 하면.함수 다섯 번 째 매개 변 수 는 좌표 원점 과 의합 직선 간 의 거리 정 도 를 나타 내 고 수치 0 은 자가 적응 파 라 메 터 를 선택 하 는 것 을 나타 낸다.함수 여섯 번 째 매개 변 수 는 의합 직선 의 각도 정 도 를 나타 내 고 수치 0 은 자가 적응 파 라 메 터 를 선택 하 는 것 을 나타 낸다.다섯 번 째 매개 변수 와 여섯 번 째 매개 변 수 는 일반적으로 0.01 을 취한 다.

    단순 예시
    
    //
    // Created by smallflyfly on 2021/6/22.
    //
     
    #include "opencv2/opencv.hpp"
    #include <iostream>
     
    using namespace std;
    using namespace cv;
     
    int main() {
        Vec4f lines;
        vector<Point2f> points;
        const static float pts[20][2] = {
                {0.0f,0.0f},{10.0f,11.0f},{21.0f,20.0f},{30.0f,30.0f},
                {40.0f,42.0f},{50.0f,50.0f},{60.0f,60.0f},{70.0f,70.0f},
                {80.0f,80.0f},{90.0f,92.0f},{100.0f,100.0f},{110.0f,110.0f},
                {120.f,120.0f},{136.0f,130.0f},{138.0f,140.0f},{150.0f,150.0f},
                {160.0f,163.0f},{175.0f,170.0f},{181.0f,180.0f},{200.0f,190.0f}
        };
        for (int i = 0; i < 20; ++i) {
            points.emplace_back(pts[i][0], pts[i][1]);
        }
        double param = 0.0;
        double reps = 0.01;
        double aeps = 0.01;
        fitLine(points, lines, DIST_L1, param, reps, aeps);
        cout << lines << endl;
     
        return 0;
    }
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기