Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

how to get desired line in the frame or measure the distance between two line?

hello,

I an using this code for hough line `#include "opencv2/highgui/highgui.hpp"

include "opencv2/imgproc/imgproc.hpp"

include <iostream>

using namespace cv; using namespace std; Mat frame; int main() { Mat src = imread("building.jpg", 0);

Mat dst, cdst;

Canny(src, 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];

            if( theta>CV_PI/180*170 || theta<CV_PI/180*10)
    {
    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( src, pt1, pt2, Scalar(0,0,255), 3, CV_AA);
    }

}

imshow("source", src;
imshow("detected lines", cdst);

waitKey();
return 0;

}`

I want line aroung the tube only and other i don't want.image description the width of tube is aroung 46 pixel, from the frame. is there any suggestions how to detect the desired line.

Thank you very much in advance.

click to hide/show revision 2
retagged

how to get desired line in the frame or measure the distance between two line?

hello,

I an using this code for hough line `#include "opencv2/highgui/highgui.hpp"

include "opencv2/imgproc/imgproc.hpp"

include <iostream>

using namespace cv; using namespace std; Mat frame; int main() { Mat src = imread("building.jpg", 0);

Mat dst, cdst;

Canny(src, 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];

            if( theta>CV_PI/180*170 || theta<CV_PI/180*10)
    {
    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( src, pt1, pt2, Scalar(0,0,255), 3, CV_AA);
    }

}

imshow("source", src;
imshow("detected lines", cdst);

waitKey();
return 0;

}`

I want line aroung the tube only and other i don't want.image description the width of tube is aroung 46 pixel, from the frame. is there any suggestions how to detect the desired line.

Thank you very much in advance.

click to hide/show revision 3
No.3 Revision

how to get desired line in the frame or measure the distance between two line?

hello,

I an using this code for hough line `#include "opencv2/highgui/highgui.hpp"

include "opencv2/imgproc/imgproc.hpp"

include <iostream>

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>

using namespace cv;
using namespace std;
Mat frame;
int main()
{
   Mat src = imread("building.jpg", 0); 

 Mat dst, cdst;

 Canny(src, 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];

             if( theta>CV_PI/180*170 || theta<CV_PI/180*10)
     {
     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( src, pt1, pt2, Scalar(0,0,255), 3, CV_AA);
     }

 }

 imshow("source", src;
 imshow("detected lines", cdst);

 waitKey();
 return 0;
}

}`

I want line aroung the tube only and other i don't want.image description the width of tube is aroung 46 pixel, from the frame. is there any suggestions how to detect the desired line.

Thank you very much in advance.