[c++] 허프 변환

허프 변환의 C++ 예제 코드는 다음과 같습니다.

#include <opencv2/opencv.hpp>

int main(int argc, char** argv) {
    // 이미지 불러오기
    cv::Mat image = cv::imread("input.jpg", cv::IMREAD_GRAYSCALE);

    // 허프 변환 적용
    std::vector<cv::Vec2f> lines;
    cv::HoughLines(image, lines, 1, CV_PI / 180, 150);

    // 선 그리기
    for (size_t i = 0; i < lines.size(); i++) {
        float rho = lines[i][0], theta = lines[i][1];
        cv::Point pt1, pt2;
        double a = cos(theta), b = sin(theta);
        double x0 = a * rho, y0 = b * rho;
        pt1.x = cvRound(x0 + 1000 * (-b));
        pt1.y = cvRound(y0 + 1000 * (a));
        pt2.x = cvRound(x0 - 1000 * (-b));
        pt2.y = cvRound(y0 - 1000 * (a));
        cv::line(image, pt1, pt2, cv::Scalar(0, 0, 255), 1, cv::LINE_AA);
    }

    cv::imshow("Hough Transform", image);
    cv::waitKey(0);
    return 0;
}

이 코드는 OpenCV 라이브러리를 사용하여 허프 변환을 적용하고, 검출된 선을 이미지에 그리는 예제입니다.

참고 문헌: