Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2011, 19:54   #1
EBorisov
Новичок
Джуниор
 
Регистрация: 19.02.2011
Сообщений: 2
По умолчанию С++, преобразование Хафа для линий с использованием opencv

Код:
#include <stdafx.h>
#include <cv.h>
#include <highgui.h>
#include <math.h>

int main(int argc, char** argv) {
	argv[1] = "images/p1.png";
	IplImage* image = cvLoadImage( 
	argv[1],
	CV_LOAD_IMAGE_GRAYSCALE
	);
	IplImage* src = cvLoadImage( argv[1] ); 

	CvMemStorage* storage = cvCreateMemStorage(0);
	CvSeq* results = cvHoughLines2( 
	image, 
	storage, 
	CV_HOUGH_PROBABILISTIC, 
	image->width/10,
    10,
	5,
	2,
    2
	); 

	for( int i = 0; i < results->total; i++ ) {
		float* line = (float*) cvGetSeqElem( results , i );
// В учебнике сказано, что при выполнении преобразования Хафа вот этим методом "CV_HOUGH_PROBABILISTIC" - line будет указателем на структуру из парных значений CvPoint для начальной и конечной точек сегмента линии.
Код:
		CvPoint pt1 = cvPoint( line[0] ); //- точка должна задаваться двумя координатами x и y -так что не катит
		CvPoint pt2 = cvPoint( line[1] );
		cvLine(
	src, 
	line[0], // - так тоже не катит error C2664: cvLine: невозможно преобразовать параметр 2 из 'float' в 'CvPoint'	
              line[1], 
	CV_RGB(0xff,0,0) 
	);
	}
	cvNamedWindow( "cvHough", 1 );
	cvShowImage( "cvHough", src);
	cvWaitKey(0);
}
Собственно весь вопрос, как передать значения этих двух точек в функцию cvLine? многовероятно мой вопрос глуп, простите

artemavd: а специальным тегом, #, религия не позволяет код оформить?

Последний раз редактировалось artemavd; 19.02.2011 в 20:09.
EBorisov вне форума Ответить с цитированием
Старый 20.02.2011, 00:17   #2
EBorisov
Новичок
Джуниор
 
Регистрация: 19.02.2011
Сообщений: 2
По умолчанию

CvPoint* line = (CvPoint*)cvGetSeqElem(results,i);
кажется вот так должно быть, и в функцию CvLine можно подставлять line[0] и line[1] но проект всё-равно запустить не могу, какие-то косяки с подключенными библиотеками.. или может что-то неправильно сделал.
Помощь всё-равно не помешает) может есть тут кто с этим работал)

"Точка входа в процедуру _invalid_parameter_noinfo_noreturn не найдена в библиотеке DLL MSVCR100.dll" вот с такой ошибкой вылетает.

Последний раз редактировалось EBorisov; 20.02.2011 в 00:34.
EBorisov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Opencv scripto Общие вопросы C/C++ 0 17.02.2011 18:53
Кто работал с OpenCV? belomorinka Общие вопросы C/C++ 0 24.07.2010 20:21
OpenCV marselik Общие вопросы C/C++ 0 23.04.2010 15:35
OpenCV. C++ API. TheVampire Общие вопросы C/C++ 3 11.04.2010 19:41
Преобразование Хафа TanchikVK Помощь студентам 2 22.02.2010 22:21