opencv霍夫檢測

1.源碼實現

#include <iostream>
#include <ctime>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

using namespace std;
using namespace cv;

int main()
{
    Mat srcImage;

    srcImage = imread("2.jpg");

    //判斷圖像是否加載成功
    if(srcImage.empty())
    {
        cout << "圖像加載失敗" << endl;
        return -1;
    }

    //對圖像進行邊緣檢測
    Mat midImage, dstImage;
    Canny(srcImage, midImage, 50, 200, 3);
    cvtColor(midImage, dstImage, COLOR_GRAY2BGR);

    //進行霍夫變換
    vector<Vec2f> lines;
    HoughLines(midImage, lines, 1, CV_PI/180, 260, 0, 0);

    //在圖像中繪出線段
    for(size_t i=0; i<lines.size(); i++)
    {
        float rho = lines[i][0];
        float theta = lines[i][1];
        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));

        line(dstImage, pt1, pt2, Scalar(0,0,255), 1, 4);
    }

    imwrite("houghlines.jpg", dstImage);

    return 0;
}

2.編譯源碼

$ g++ -o test test.cpp -std=c++11 -I/usr/local/include -L/usr/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -Wl,-rpath=/usr/local/lib

3.運行結果


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章