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

Alex_grem

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

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

  • Посещение

Репутация

0 Новичек

О Alex_grem

  • Звание
    Бывалый
  1. Как прикрутить OpenCV к билдеру?

    Помогите, пожалуйста! Есть либа, созданная в MS Visual Studio 2008 (lib и dll). Файл .lib сконвертил через coff2omf, добавил в проект C++Builder, а он все равно пишет: [iLINK32 Error] Error: Unresolved external ...... Файл .dll лежит рядом с файлом .lib....Может кто-что посоветует...2 дня бьюсь, а ответа так и не нашел
  2. Как прикрутить OpenCV к билдеру?

    Все, разобрался! Только возникает другой вопрос: пытаюсь загрузить картинку с помощью команды frame = cvLoadImage("img.jpg",1), но содержимое frame = NULL?
  3. Как прикрутить OpenCV к билдеру?

    Подскажите, пожалуйста, как это сделать в C++ Builder?
  4. Как прикрутить OpenCV к билдеру?

    Пишу в CodeGear C++ Builder 11.0. При компиляции выскакивают ошибки: [iLINK32 Error] Error: Unresolved external '_cvCreateCameraCapture' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ [iLINK32 Error] Error: Unresolved external '_cvInitFont' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ [iLINK32 Error] Error: Unresolved external '_cvGrabFrame' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ [iLINK32 Error] Error: Unresolved external '_cvRetrieveFrame' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ [iLINK32 Error] Error: Unresolved external '_cvCreateImage' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ [iLINK32 Error] Error: Unresolved external '_cvCopy' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ [iLINK32 Error] Error: Unresolved external '_cvCloneImage' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ [iLINK32 Error] Error: Unresolved external '_cvConvertScale' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ [iLINK32 Error] Error: Unresolved external '_cvMerge' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ [iLINK32 Error] Error: Unresolved external '_cvGetRawData' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ [iLINK32 Error] Error: Unresolved external '_cvReleaseImage' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ [iLINK32 Error] Error: Unresolved external '__fastcall TForm1::FormCreate(System::TObject *)' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ [iLINK32 Error] Error: Unresolved external '__fastcall TForm1::Image1Click(System::TObject *)' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ [iLINK32 Error] Error: Unresolved external '_cvReleaseCapture' referenced from C:\DOCUMENTS AND SETTINGS\TTL-+T+г\¦+L -+¦L¦+=T-\RAD STUDIO\PROJECTS\PROGECTFIRSTTEST\DEBUG\UNIT1.OBJ Что посоветуете? Заранее спасибо!
  5. Получение значений Hue, Saturation, Value

    Пытаюсь получить след. способом значения H,S,V (см. код) для конкретной точки, но в конечном итоге в массиве hsv содержатся значения цветового пространства RGB...может где-то ошибаюсь? void GetHSV_val(IplImage *frame, int x, int y) { IplImage *hue, *sat, *val, *HSV; uchar *dataHue, *dataSat, *dataVal; hue = cvCreateImage(cvGetSize(frame), frame->depth, 1); //Hue (тон) sat = cvCreateImage(cvGetSize(frame), frame->depth, 1); //Saturation (насыщенность) val = cvCreateImage(cvGetSize(frame), frame->depth, 1); //Value (значение) HSV = cvCreateImage(cvGetSize(frame), frame->depth, 3); cvZero(hue); cvZero(sat); cvZero(val); cvZero(HSV); cvCvtColor( frame, HSV, CV_BGR2HSV); cvSplit(HSV, hue, sat, val, 0); dataHue = (uchar *)hue->imageData; dataSat = (uchar *)sat->imageData; dataVal = (uchar *)val->imageData; hsv[0] = dataHue[x*(hue->widthStep)+y]; hsv[1] = dataSat[x*(sat->widthStep)+y]; hsv[2] = dataVal[x*(val->widthStep)+y]; ................................................................. ................................................................. } [/codebox]
  6. выделение FloodFill`ом

    Так маска будет содержать выделенную область?
  7. выделение FloodFill`ом

    "для каждой плоскости изображения (покомпонентно)" имеется ввиду для каждого цвета?
  8. выделение FloodFill`ом

    можно ли выделить область, "закрашенную" FloodFill`ом?
  9. Как получить значения Hue, Saturation, Value точки на картинке? Картинка в HSV.
  10. Работа с контурами

    Версия opencv 1.2. Весь код, собственно, Ваша функция.... Все что я добавил, отмечено комментарием float XC[1000]={0}; float YC[1000]={0}; float S[1000]={0}; double mt=0; int ID=0; int NumCont=0; int NumCont1=0; CvMemStorage* storage = 0; CvSeq* contours; CvSeq* Templ; CvSeq* result; storage = cvCreateMemStorage(0); CvSeq* polygons = cvCreateSeq( 0, sizeof(CvSeq), sizeof(CvPoint), storage ); CvMoments moments; CvHuMoments hu_moments; //while(1) //{ cvCvtColor(Grab, gray, CV_BGR2GRAY); // Получаем серый цвет cvThreshold( gray, gray, 150,255,CV_THRESH_BINARY); // Необходимо удалить белый бордюр cvRectangle(gray, cvPoint(0,0), cvPoint(gray->width-1,gray->height-1),CV_RGB(0,0,0)); // Утолщаем контуры cvDilate( gray, gray, 0, 1 ); // Нах. границы cvCanny( gray, gray, 50, Val1, 5 ); // Нах. контуры cvFindContours( gray, storage,&contours,sizeof(CvContour),CV_RETR_LIST,CV_CHAIN_APPROX_SIMPLE,cvPoint(0,0)) ; //-------------- if(contours!=0) { NumCont=contours->total; // количество найденных контуров } int NC=0; for(;contours!=0;contours = contours->h_next) { // Аппр. контуров полигонами result = cvApproxPoly( contours, sizeof(CvContour), storage,CV_POLY_APPROX_DP, cvContourPerimeter(contours)*0.001, 0 ); // Площадь полигона double area=fabs(cvContourArea(result,CV_WHOLE_SEQ)); // Объявление читалки точек CvSeqReader reader; // Инициализация читалки точек cvStartReadSeq( result, &reader, 0 ); // Две точки CvPoint pt[2]; if(area>500) { // Вычисляем моменты cvMoments( result, &moments); // Добавленный код cvGetHuMoments(&moments,&hu_moments); char m = cvWaitKey(33); if( m == 109) { cout<<"Hu1 = "<<hu_moments.hu1<<endl; cout<<"Hu2 = "<<hu_moments.hu2<<endl; cout<<"Hu3 = "<<hu_moments.hu3<<endl; cout<<"Hu4 = "<<hu_moments.hu4<<endl; cout<<"Hu5 = "<<hu_moments.hu5<<endl; cout<<"Hu6 = "<<hu_moments.hu6<<endl; cout<<"Hu7 = "<<hu_moments.hu7<<endl<<endl; } // Коней добавленного кода // Центр тяжести float xc=(moments.m10/moments.m00); float yc=(moments.m01/moments.m00); // Обрубаем клонов bool ok=1; for (int o=0;o<NC;o++) { if( ((xc-XC[o])*(xc-XC[o])+(yc-YC[o])*(yc-YC[o]))<10 && fabs((area-S[o])/(area+S[o]))<0.3){ok=0;} } // if(ok){ // Запоминаем шаблон if(NumCont1==0) {Templ=cvCloneSeq(result);} // Сравниваем с найденными контурами mt=cvMatchShapes( Templ, result,CV_CONTOURS_MATCH_I3); NumCont1++; double M00=moments.m00; double M20=moments.m20; double M02=moments.m02; double M11=moments.m11; double A=(M20/M00)-xc*xc; double B=2*((M11/M00)-xc*yc); double C=(M02/M00)-yc*yc; double LL=sqrt( ( (A+C)+sqrt(B*B+(A-C)*(A-C)) )/2)*2; double LW=sqrt( ( (A+C)-sqrt(B*B+(A-C)*(A-C)) )/2)*2; // Для вычисления угла нужны центральные моменты инерции M20=moments.mu20; M02=moments.mu02; M11=moments.mu11; double theta=(atan2(2*M11,(M02-M20))/2)*(180/pi); // Отмечаем центр cvCircle( Grab, cvPoint(xc,yc), 3, CV_RGB(0,255,255), -1, 8, 0 ); //string str1 = str(format("%lf") % mt); _fcvt_s(NumChar, 10, mt, 2, &Decimal, &Sign); cvPutText( Grab,NumChar, cvPoint(xc,yc),&font, CV_RGB(255,255,0)); // Достаем точки из хранилища точек и рисуем линии for (int i=0;i<result->total-1;i++) { CV_READ_SEQ_ELEM( pt[0], reader ); CV_READ_SEQ_ELEM( pt[1], reader ); if(mt>0.5){cvLine(Grab,pt[0],pt[1],CV_RGB(255,0,0));} else{cvLine(Grab,pt[0],pt[1],CV_RGB(0,255,0));} } } XC[NC]=xc; YC[NC]=yc; S[NC]=area; NC++; } // if } // for cvPutText( Grab,"NCont1=", cvPoint(20,20),&font, CV_RGB(255,255,0)); результат:
  11. Работа с контурами

    я использовал код вашей программы (ContourMatching). в ней вроде вы удалили края вокруг рамки
  12. Работа с контурами

    Попробовал сделать следующее: создал ч/б рисунок 100*100 с окружностью по центру, нашел контур, посчитал инвариантные моменты, затем переместил эту окружность на другую позицию и получил совершенно другие значения инвариантных моментов. Почему?
  13. Дилетантские вопросы

    Если честно, не понимаю про что идет речь. Какие точки в 1 байте? есть ли какие-нибудь ссылки на данную тему?
  14. Дилетантские вопросы

    А русским языком слабо объяснить, ну не англичанин я!
  15. Дилетантские вопросы

    Скажите, пожалуйста, что обозначает параметр widthStep в структуре IplImage?
×