line_detector icon indicating copy to clipboard operation
line_detector copied to clipboard

The wrong line segment

Open MrLihj opened this issue 5 years ago • 2 comments

This is my code:


`void main()
{
	Mat image;
	image = imread("1.png");
	Mat gray_image;
	cvtColor(image, gray_image, CV_BGR2GRAY);
	int W = image.rows;
	int H = image.cols;
	int image_size = W* H;
	unsigned char* input = new unsigned char[image_size];
	memcpy(input, gray_image.data, image_size);
	vector<line_float_t> Lines;
	boundingbox_t Bbox = { 0,0,W,H };
	float scalex =0.5;
	float scaley =0.5;
	int Flag = 0;
	Flag = LsdLineDetector(input, W, H, scalex, scaley, Bbox, Lines);
	cout << Flag << endl;
	for (int i = 0; i < Lines.size(); i++)
	{
		line(image, Point(Lines[i].startx, Lines[i].starty), Point(Lines[i].endx, Lines[i].endy), Scalar(0, 0, 255), 2);
	}
	imshow("image1", image);
	waitKey(0);
	system("pause");
}`

%`M}6JATF}_J4@GG2GN5PIT

MrLihj avatar Apr 29 '19 09:04 MrLihj

This is my code:


`void main()
{
	Mat image;
	image = imread("1.png");
	Mat gray_image;
	cvtColor(image, gray_image, CV_BGR2GRAY);
	int W = image.rows;
	int H = image.cols;
	int image_size = W* H;
	unsigned char* input = new unsigned char[image_size];
	memcpy(input, gray_image.data, image_size);
	vector<line_float_t> Lines;
	boundingbox_t Bbox = { 0,0,W,H };
	float scalex =0.5;
	float scaley =0.5;
	int Flag = 0;
	Flag = LsdLineDetector(input, W, H, scalex, scaley, Bbox, Lines);
	cout << Flag << endl;
	for (int i = 0; i < Lines.size(); i++)
	{
		line(image, Point(Lines[i].startx, Lines[i].starty), Point(Lines[i].endx, Lines[i].endy), Scalar(0, 0, 255), 2);
	}
	imshow("image1", image);
	waitKey(0);
	system("pause");
}`

%`M}6JATF}_J4@GG2GN5PIT

Maybe image.rows means H, and image.cols means W in your code. @MrLihj

frotms avatar Apr 29 '19 15:04 frotms

This is my code:


`void main()
{
	Mat image;
	image = imread("1.png");
	Mat gray_image;
	cvtColor(image, gray_image, CV_BGR2GRAY);
	int W = image.rows;
	int H = image.cols;
	int image_size = W* H;
	unsigned char* input = new unsigned char[image_size];
	memcpy(input, gray_image.data, image_size);
	vector<line_float_t> Lines;
	boundingbox_t Bbox = { 0,0,W,H };
	float scalex =0.5;
	float scaley =0.5;
	int Flag = 0;
	Flag = LsdLineDetector(input, W, H, scalex, scaley, Bbox, Lines);
	cout << Flag << endl;
	for (int i = 0; i < Lines.size(); i++)
	{
		line(image, Point(Lines[i].startx, Lines[i].starty), Point(Lines[i].endx, Lines[i].endy), Scalar(0, 0, 255), 2);
	}
	imshow("image1", image);
	waitKey(0);
	system("pause");
}`

%`M}6JATF}_J4@GG2GN5PIT

Maybe image.rows means H, and image.cols means W in your code. @MrLihj

Thanks,this solved it for me!

ondrejvalusek avatar Oct 13 '20 10:10 ondrejvalusek