estrada 0 Жалоба Опубликовано April 16, 2012 I realized, that when downloading the DLL's file, libcxcore200.dll seems to be corrupted... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
rus.punk 0 Жалоба Опубликовано April 20, 2012 а что делать если не помагают : msvcrt2008: http://www.microsoft...aylang=en&id=29 msvcrt2005: http://www.microsoft...ls.aspx?id=3387 на других РС получаю даже с ними "Ошибка при инициализации приложения (0х0150002). Для выхода из приложения нажмите "ОК". " Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
139413 0 Жалоба Опубликовано April 23, 2012 Ребят по прошу помощи http://gidesa.altervista.org/camshiftdemo.php LK demo программа, там чего то не хватает, можете скинуть полностью рабочий комплект сорсов Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
139413 0 Жалоба Опубликовано April 23, 2012 написал сам по примеру все работает Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
estrada 0 Жалоба Опубликовано April 24, 2012 HI AGAIN, WELL I ALREADY SOLVED THE PROBLEM AND NOW A'M WORKING ON BUILDER 6 AND OPENCV 2.0, BUT CAN YOU EXPLAIN ME HOW TO COMPILE THE OPENCV FOR BUILDER C++, BECAUSE I WANT TO TRY THE NEW OPENCV VERSION 2.4 THANKS... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано April 24, 2012 Hi. Try this solution (version 2.3.x + builder XE2): http://www.compvision.ru/forum/index.php?showtopic=763 Compiling opencv with borland is very hard, and you don't need do it. Just compile opencv with microsoft visual studio, to get dll and lib files. To use it in builder you need to convert lib files (see topic above) and fix some headers (example of fixed headers in arhive from topic above). Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
rus.punk 0 Жалоба Опубликовано April 28, 2012 Народ так всё-таки что с этим делать http://www.compvision.ru/forum/index.php?showtopic=64&view=findpost&p=5946 ? на многих компьютерах моё приложение не работает :-( ПОМОГИТЕ !!!! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано April 28, 2012 Кодеки на тех компах такие-же стоят? TBB, IPP проект требует? Этой тулзой смотрели, что ему надо? http://www.dependencywalker.com/ Запуск от админа? Пути к DLL прописаны? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex_SHA 1 Жалоба Опубликовано May 16, 2012 Всем привет. Поставил BC-6, распаковал OpenCV 2.4, но конвертнуть библиотеки не могу. Сама утилита coff2omf.exe выдает ошибку. Кто-то конвертировал свежие библиотеки v2.3x или v2.4 под BC-6? Поделитесь пожалуйста. Заранее спасибо. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано May 16, 2012 Надо их сначала в Visual Studio собрать, а затем, конвертировать. Кстати, без исправленных заголовочников работать не будет, наверное Вы уже это поняли. См. http://www.compvision.ru/forum/index.php?showtopic=763 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mich 0 Жалоба Опубликовано May 22, 2012 Потребовалось выводить изображение на экран. Использую пример Builder6+OpenCV1.1. Пример работает, но я решил его улучшить - чтобы при изменении размера окна видео тоже масштабировась. #include <vcl.h> #pragma hdrstop #include "cv.h" #include "highgui.h" #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" //--------------------------------------------------------------------------- TForm1 *Form1; CvCapture* capture = 0; IplImage *frame, *frame_copy = 0; CvFont font;double ratio, x_ratio, y_ratio; #define WIDTHBYTES(bits) ((((bits) + 31) / 32) * 4) HBITMAP CreateRGBBitmap(IplImage* _Grab) { char *App; void* pBits; LPBITMAPINFO lpbi = new BITMAPINFO; lpbi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); lpbi->bmiHeader.biWidth = _Grab->width; lpbi->bmiHeader.biHeight =_Grab->height; lpbi->bmiHeader.biPlanes = 1; lpbi->bmiHeader.biBitCount = 24; lpbi->bmiHeader.biCompression = BI_RGB; lpbi->bmiHeader.biSizeImage = WIDTHBYTES((DWORD)_Grab->width*8)*_Grab->height; lpbi->bmiHeader.biXPelsPerMeter = 0; lpbi->bmiHeader.biYPelsPerMeter = 0; lpbi->bmiHeader.biClrUsed = 0; lpbi->bmiHeader.biClrImportant = 0; HBITMAP hBitmap = CreateDIBSection(NULL, lpbi, DIB_RGB_COLORS, (void **)&pBits, NULL, 0); delete lpbi; if(hBitmap) App = (char*)pBits; if(_Grab->nChannels == 1) // Серое или бинарное { for(int i = 0; i < _Grab->height; i++) { for(int j = 0; j < _Grab->width; j++) { App[_Grab->width*3*(_Grab->height - i - 1) + j*3] = _Grab->imageData[_Grab->width*(i) + j]; App[_Grab->width*3*(_Grab->height - i - 1) + j*3 + 1] = _Grab->imageData[_Grab->width*(i) + j]; App[_Grab->width*3*(_Grab->height - i - 1) + j*3 + 2] = _Grab->imageData[_Grab->width*(i) + j]; } } } if(_Grab->nChannels == 3) // Цветное { for(int i = 0; iheight; i++) { memcpy(App + _Grab->width*3*(_Grab->height - i - 1), _Grab->imageData + _Grab->width*3*i, _Grab->width*3); } } return hBitmap; } void APIDrawIpl(int x, int y, IplImage* _Grab, void *HANDLE) { HDC hMemDC, hDC; hDC = GetDC(HANDLE); hMemDC = CreateCompatibleDC(hDC); HBITMAP Bitmap = CreateRGBBitmap(_Grab); SelectObject(hMemDC, Bitmap); BitBlt(hDC, x, y, _Grab->width, _Grab->height, hMemDC, 0, 0, SRCCOPY); DeleteObject(Bitmap); DeleteDC(hMemDC); DeleteDC(hDC);} //--------------------------------------------------------------------------- void __fastcall TForm1::ProcessFrame(IplImage* img) { APIDrawIpl((ClientWidth - frame_copy->width)/2, (ClientHeight - frame_copy->height)/2, img, Form1->Handle); } //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Color = clBlack; capture = cvCaptureFromCAM(0); cvInitFont(&font, CV_FONT_HERSHEY_DUPLEX, 0.5, 0.5, 0, 1, 8); Application->OnIdle = IdleLoop; } //--------------------------------------------------------------------------- void __fastcall TForm1::IdleLoop(TObject*, bool& done) { done = false; if(capture) { if(!cvGrabFrame(capture)) return; frame = cvRetrieveFrame(capture); if(!frame) return; x_ratio = (double)ClientWidth/frame->width; y_ratio = (double)ClientHeight/frame->height; ratio = x_ratio < y_ratio ? x_ratio : y_ratio; if(!frame_copy) frame_copy = cvCreateImage(cvSize(frame->width*ratio, frame->height*ratio), IPL_DEPTH_8U, frame->nChannels); cvResize(frame, frame_copy); ProcessFrame(frame_copy); } } //--------------------------------------------------------------------------- void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { cvReleaseImage(&frame_copy); cvReleaseCapture(&capture); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormResize(TObject *Sender) { Canvas->Brush->Color = clBlack; Canvas->FillRect(TRect(0, 0, Width, Height)); if(frame_copy) cvReleaseImage(&frame_copy); if(frame) { x_ratio = (double)ClientWidth/frame->width; y_ratio = (double)ClientHeight/frame->height; ratio = x_ratio < y_ratio ? x_ratio : y_ratio; if(!frame_copy) frame_copy = cvCreateImage(cvSize(frame->width*ratio, frame->height*ratio), IPL_DEPTH_8U, frame->nChannels); } } //--------------------------------------------------------------------------- А в итоге получается вот что: Когда начинаешь менять размер окна, иногда получается нормальная картинка. Но чаще такая галиматья. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано May 22, 2012 http://www.compvision.ru/forum/index.php?showtopic=78 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mich 0 Жалоба Опубликовано May 22, 2012 Спасибо, мудрый человек. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
rus.punk 0 Жалоба Опубликовано May 26, 2012 Кодеки на тех компах такие-же стоят? TBB, IPP проект требует? Этой тулзой смотрели, что ему надо? http://www.dependencywalker.com/ Запуск от админа? Пути к DLL прописаны? Можно ли по подробнее как этим пользоваться ? И ещё один вопрос возник, всё равно некуда больше обращаться, ни кто объяснить должным образом не может :-\ void __fastcall TForm1::IdleLoop(TObject*, bool& done) { done = false;// Ïîòîê îáðàáîòêè ïðîñòîÿ if( capture ) { if( !cvGrabFrame( capture )) goto skip; frame = cvRetrieveFrame( capture ); if( !frame ) goto skip; if( !frame_copy ) frame_copy = cvCreateImage( cvSize(frame->width,frame->height), IPL_DEPTH_8U, frame->nChannels ); if( frame->origin == IPL_ORIGIN_TL ) cvCopy( frame, frame_copy, 0 ); else cvFlip( frame, frame_copy, 0 ); ProcessFrame( frame_copy ); } skip:; } c помощью этого цикла можно уменьшить как нибудь нагрузку на процессор ? уменьшить количество кадров в секунду ? или ещё как нибудь ? машина у меня не сильно мощная :-\ Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано May 26, 2012 Чем пользоваться DW? Запускаете его, open и открываете Ваше приложение. Он покажет, какие библиотеки загружаются. Этот цикл съедает все СВОБОДНОЕ время, он не мешает другим процессам (по крайней мере не должен ). Уменьшить можно, но не с помощью этого цикла, а сделать эту процедуру выполняемой по таймеру. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
rus.punk 0 Жалоба Опубликовано May 27, 2012 Т.е. вместо этого цикла можно положить таймер, с какой то частотой, и в него влить эту же логику ? правильно я понимаю ? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано May 27, 2012 Правильно, соорудить таймер и в функцию обратного вызова один-в-один скопировать содержимое метода. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Randel 0 Жалоба Опубликовано May 30, 2012 Добрый день, Smorodov! Пытаюсь "прикрутить" opencv к С++Builder XE. Прочитал обе темы на Вашем форуме: эту и "Opencv 2.3.2 + Builder XE2". Запускать демо-проекты у меня получается. Builder XE работает и со сборкой opencv 2.0 и с 2.3.2. Также получается выполнять какие-нибудь простые функции, типа загрузки изображений. Но вот cv::Mat img; или, к примеру cv::Mat img = cv::imread("some.bmp", 2); не работают. Компилятор (в случае примера из данной ветки) ругается: [iLINK32 Error] Error: Unresolved external 'cv::fastFree(void *)' referenced from C:\RAD STUDIO\PROJECTS\SIMPLE\DEBUG_BUILD\UNIT1.OBJ [iLINK32 Error] Error: Unresolved external 'cv::imread(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, int)' referenced from C:\RAD STUDIO\PROJECTS\SIMPLE\DEBUG_BUILD\UNIT1.OBJ Если использовать пример с opencv 2.3.2, то еще ругнется на [ILINK32 Error] Error: Unresolved external 'cv::Mat::allocate()(void *)... Все либы подключены, dll - в папке экзешника. Примеры и другие функции работают, а эти нет...Не могли бы Вы помочь? Что нужно сделать? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано May 30, 2012 Я, честно говоря, не использовал в билдере интерфейс C++, есть мысль, что от проекта надо отладочные варианты библиотек отключить(или наоборот подключить, если это отладочный профиль), но это только предположение. В студии тоже отладочная и релизная версии плохо вместе работают. Сейчас у меня билдер не установлен. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Randel 0 Жалоба Опубликовано May 31, 2012 С версиями библиотек пробовал (ставил профиль -дебаг, грузил соответствующие либы)- не получилось. Простите за глупый вопрос, а если не использовать интерфейс С++, как мне по-билдеровски написать cv::Mat img; ? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано May 31, 2012 // Объявляем IplImage *img; // Создаем изображение нужного типа img=cvCreateImage(w,h,CV_8UC3);[/code] Это во всех примерах билдеровских есть. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Randel 0 Жалоба Опубликовано June 2, 2012 Понятно, но тут вот, что получается. Я переписал весь свой нехитрый "проект" в синтаксисе типа: CvMat *img, *imggauss , *edges; img=cvLoadImageM("input.bmp",0); edges=cvCloneMat(img); imggauss=cvCloneMat(img); cvSmooth(img,imggauss,CV_GAUSSIAN,3,3,1); cvCanny(imggauss,edges,100,20,3); cvShowImage("inputGaus",imggauss); cvShowImage("edges",edges); Все работает без замечаний. Но, ведь, если я правильно понимаю, получается, что я использую старые функции OpenCV, чуть ли не версии 1.1 ? В тоже время, использовать вместо CvMat новый класс Mat, и , соответственно, новые функции у меня не получается: cv::Mat *mat; mat->create(3,3,img->type); Выдает ошибку "Unresolved external cv::Mat::create" Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано June 2, 2012 Ну тада Visual Studio ждет Вас Borland такие навороченные шаблоны не переваривает, или очень много придется переписывать. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
rus.punk 0 Жалоба Опубликовано June 12, 2012 Правильно, соорудить таймер и в функцию обратного вызоваодин-в-один скопировать содержимое метода. Организация таймера не привела ни к чему хорошему после строки инициализации устройства: capture = cvCaptureFromCAM(0); происходит 100% загрузка, если грузить вторую камеру, комп виснет напроч даже если Таймер установлен на 20 сек. Что с этим делать? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано June 12, 2012 А код можно посмотреть? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах