Перейти к содержимому
Compvision.ru

AlCapone

Пользователи
  • Количество публикаций

    6
  • Зарегистрирован

  • Посещение

Репутация

0 Новичек

О AlCapone

  • Звание
    Новичок
  • День рождения 28.08.1987

Profile Information

  • Пол
    Мужской
  1. Как прикрутить OpenCV к билдеру?

    А что это за функция такая PRecord и где она валяется?
  2. Как прикрутить OpenCV к билдеру?

    Я понимаю, но я спрашивал можно ли на Делфе как нибудь заменить данную строчку: float* p = (float*)cvGetSeqElem( circles, i ); Если я правильно понял, то вот это (float*)cvGetSeqElem( circles, i ) - перевод в формат типа Float, если написать на делфе float(cvGetSeqElem( circles, i )), то выдаст ошибку: типы PChar i Float - несовместимы. Вот я и спрашиваю можно ли как-то это обойти или только так?
  3. Как прикрутить OpenCV к билдеру?

    Задача связана с поиском радужной оболонки. Был вот такой вот код на С: int main(int argc, char** argv) { IplImage* img; if( argc == 2 && (img=cvLoadImage(argv[1], 1))!= 0) { IplImage* gray = cvCreateImage( cvGetSize(img), 8, 1 ); CvMemStorage* storage = cvCreateMemStorage(0); cvCvtColor( img, gray, CV_BGR2GRAY ); cvSmooth( gray, gray, CV_GAUSSIAN, 9, 9 ); // smooth it, otherwise a lot of false circles may be detected CvSeq* circles = cvHoughCircles( gray, storage, CV_HOUGH_GRADIENT, 2, gray->height/4, 200, 100 ); int i; for( i = 0; i < circles->total; i++ ) { float* p = (float*)cvGetSeqElem( circles, i ); cvCircle( img, cvPoint(cvRound(p[0]),cvRound(p[1])), 3, CV_RGB(0,255,0), -1, 8, 0 ); cvCircle( img, cvPoint(cvRound(p[0]),cvRound(p[1])), cvRound(p[2]), CV_RGB(255,0,0), 3, 8, 0 ); } cvNamedWindow( "circles", 1 ); cvShowImage( "circles", img ); } return 0; } Я его переделал на Делфу: procedure TForm1.Button2Click(Sender: TObject); var img, gray: PIplImage; storage : PCvMemStorage; circles : PCvSeq; s : CvSize; i : integer; r : PCVRect; begin img := cvLoadImage(pchar(OpenPictureDialog1.FileName),1); s.width := img.width; s.height := img.height; gray := cvCreateImage(s,8,1); storage := cvCreateMemStorage(0); cvCvtColor(PCvArr(img),PCvArr(gray),CV_BGR2GRAY); cvSmooth(PCvArr(gray),PCvArr(gray),CV_GAUSSIAN,9,9,0,0); circles := cvHoughCircles(PCvArr(gray),storage,CV_HOUGH_GRADIENT,2,gray.height/4,200,100,0,0); for i:=0 to circles.total do begin r := PCvRect(cvGetSeqElem(circles,i)); Image1.Canvas.Brush.Color := clRed; Image1.Canvas.Ellipse(r.x,r.y,r.x+r.width,r.y+r.height); end; end; Как видите, я вместо cvCircle писал CvRect. Оно то что-то считает, но как Вы понимаете не то, есть ли какая-то алтернатива вот этому кусочку кода на Делфи: float* p = (float*)cvGetSeqElem( circles, i ); cvCircle( img, cvPoint(cvRound(p[0]),cvRound(p[1])), 3, CV_RGB(0,255,0), -1, 8, 0 ); cvCircle( img, cvPoint(cvRound(p[0]),cvRound(p[1])), cvRound(p[2]), CV_RGB(255,0,0), 3, 8, 0 ); Мне нужно просто вытянуть координаты кругов:
  4. Как прикрутить OpenCV к билдеру?

    Замечательная библиотека! Но если я правильно понял, то работа с камерой здесь не реализована? Поскольку данная запись вызывает ошибку ([Error] Unit1.pas(20): Undeclared identifier: 'CvCapture'): var capture : CvCapture;
  5. Как прикрутить OpenCV к билдеру?

    Все нормально, там просто все очень критично с путями. Я каскады засунул в одноименную папку (для чистоты ) и обращаюсь к ним таким вот образом: c_path := ExtractFilePath(ParamStr(0))+'cascades\'; f1 := c_path+'haarcascade_frontalface_alt.xml'; file1 := PChar(f1); cascade_f := cvLoad(file1,0,0,0); Вот, если кому интересно - проэкт на делфи, который находит лица, глаза, нос и рот. Напоминаю: для успешной работы в папке должна быть бибилиотека VCOpenCV.dll OCV.ZIP
  6. Как прикрутить OpenCV к билдеру?

    Вылезла проблема, не загружаются классификаторы: procedure TForm1.Button1Click(Sender: TObject); var img : PIplImage; file1 : PChar; file2 : PChar; begin file1 := 'haarcascade_frontalface_alt.xml'; file2 := 'haarcascade_eye.xml'; cascade_f := cvLoad(file1,0,0,0); cascade_e := cvLoad(file2,0,0,0); ... cascade_f и cascade_е остаются nil
×