Deteksi garis / Hough line transform dengan OpenCV

Selamat malam! Ketemu lagi deh... Maaf kemarin2 belum sempet update.
Sekarang lagi jaman2nya tugas akhir nih.. Makanya mau didokumentasiin.
Kali ini mau bahas mengenai deteksi garis dengan metode hough line transform lewat webcam. Tapi untuk postingan ini, belum saya tambahi dengan pengaturan threshold. Jadi, apapun yang terlihat sebagai garis lurus, akan terdeteksi sebagai garis, untuk kemudian ditarik garis berwarna merah yang menandakan bahwa suatu garis telah terdeteksi..

Saya kasih contoh hasilnya ya..


Berikut salinan code nya.. Silahkan digunakan sebaik mungkin:

//BISMILLAH - Dzikri Purnama - Free to Copy&Paste
//Deteksi garis - Hough line transform dengan OpenCV
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <opencv2/core/core.hpp>

using namespace cv;
using namespace std;

int main()
{
    VideoCapture cap(0);

    if(!cap.isOpened())

    return -1;

    cap.set(CV_CAP_PROP_FRAME_WIDTH,320);

    cap.set(CV_CAP_PROP_FRAME_HEIGHT,240);
    namedWindow("camera");
    Mat frame, dst, cdst;
    while (true)

     {

     cap>>frame;

     GaussianBlur(frame, frame, Size(3,3),2,2);

     imshow("camera",frame);

    Canny(frame, dst, 50, 200, 3);

    cvtColor(dst, cdst, CV_GRAY2BGR);

    vector<Vec2f> lines;
    // detect lines
    HoughLines(dst, lines, 1, CV_PI/180, 150, 0, 0 );

    // draw lines
    for( size_t i = 0; i < lines.size(); i++ )
    {
        float rho = lines[i][0], 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( cdst, pt1, pt2, Scalar(0,0,255), 2, CV_AA);
    }


    imshow("detected lines", cdst);
    if(waitKey(20) != -1)

        break;

        }

    return 0;
}
Sekian. Terima kasih mau menyempatkan membaca. Kalau bingung, tolong tulis di komentar saja ya.

Related Posts: