반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

폴크(FOLC)

머신 비전 알고리즘 - OpenCV - 이미지처리11 본문

머신 비전/머신 비전 알고리즘 테크닉 CPP

머신 비전 알고리즘 - OpenCV - 이미지처리11

folcjin 2021. 7. 27. 09:35
728x90
반응형

# 디지털 이미지 처리
   # 이미지의 상태 정보에서 일반적인 정보를 생성한다.
      > 추출된 정보를 일반화한다.

# 이미지 처리 - OpenCV 4.5.3 으로 테스트
   # 이미지의 상태 정보에서 일반적인 정보를 생성
   > Points : 입력, line_result : 결과, param : 수치형 매개변수(0 일때 최적화 자동 선택)
   > reps : 정확도(거리), aeps : 정확도(각도), dp : 해상도, param1 : canny 최대값, param2 : 최소 반지름

# cv::fitLine
   > vector<cv::Point2f> Points;
   > cv::Vec4f line_result;
   > int distType = cv::DIST_L2;
   > double param = 0, double reps = 0.01, double aeps = 0.01;
   > cv::fitLine(cv::Mat(Points), line_result, distType, param, reps, aeps);
   > int x0 = (int)(line_result[2]);
   > int y0 = (int)(line_result[3]);
   > int x1 = x0 - (int)(200.f * line_result[0]); // 200 길이를 갖는 벡터 추가 X 방향
   > int y1 = y0 - (int)(200.f * line_result[1]); // 200 길이를 갖는 벡터 추가 Y 방향

# cv::HoughLines
   >  double thresh1 = 128.0, thresh2 = 228.0, max_val = 255.0;
   > int type = cv::THRESH_BINARY;
   > cv::threshold(srcImage, dstImage, thresh1, max_val, type);
   > cv::Mat dstcannyImage;
   > int L2gradient = false;
   > cv::Canny(srcImage, dstcannyImage, thresh1, thresh2, L2gradient);
   > double rho = 1.0, double theta = CV_PI / 180.0, int threshold = 150,
   > double srn = 0.0, double stn = 0.0,
   > double min_theta = 0.0, double max_theta = CV_PI;
   > vector<cv::Vec2f> line_result;
   > cv::HoughLines(dstcannyImage, line_result, rho, theta, threshold, srn, stn, min_theta, max_theta);

# cv::HoughLinesP
   >  double minLineLength = 0.0, maxLineGap = 0.0;
   > cv::HoughLinesP(dstcannyImage, line_result, rho, theta, threshold, minLineLength, maxLineGap);

# cv::fitEllipse
   > cv::RotatedRect result1 = cv::fitEllipse(cv::Mat(Points));
   > cv::RotatedRect result2 = cv::fitEllipseAMS(cv::Mat(Points));
   > cv::RotatedRect result3 = cv::fitEllipseDirect(cv::Mat(Points));
   > cv::RotatedRect 안에 BoundingBox, Center PointXY, SizeXY, Angle 값이 존재

# cv::HoughCircles
   > int method = cv::HOUGH_GRADIENT, int minRadius = 0, int maxRadius = 0;
   > double dp = 1.0, double minDist = 100, double param1 = 228.0, double param2 = 100;
   > cv::HoughCircles(cv::Mat(Points), line_result, method, dp, minDist, param1, param2, minRadius, maxRadius);

728x90
반응형
사업자 정보 표시
사업자 등록번호 : -- | TEL : --