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

qawaq

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

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

  • Посещение

Репутация

0 Новичек

О qawaq

  • Звание
    Бывалый
  1. Ошибка OpenCV Error: Assertion failed

    for( int i=x-5;i<x+5;i++) { for( int j=y-5;j<y+5;j++) { q[ii]=tr.at<uchar>(i,120)+q[ii]; } }; проблема была в том, что координаты в этом месте вылезали иногда за пределы рисунка... запутался в ориентации по Cv::Mat там не (x,y) а (y,x)
  2. Ошибка OpenCV Error: Assertion failed

    функции void Roia(IplImage* img,int x,int y) { IplImage* fra=0; fra = cvCreateImage( cvGetSize(img), IPL_DEPTH_8U, 1 ); cvConvertImage(img,fra); cv::Mat tr=fra; for( int i=x-5;i<x+5;i++) { for( int j=y-5;j<y+5;j++) { q[ii]=tr.at<uchar>(i,120)+q[ii]; } }; q[ii]=q[ii]/100; ~cv::Mat(tr); } // обработчик событий от мышки void myMouseCallback( int event, int x, int y, int flags,void* param ) { IplImage* img = (IplImage*) param; switch( event ){ case CV_EVENT_MOUSEMOVE: break; case CV_EVENT_LBUTTONDOWN: printf("%d x %d\n", x, y); Roia(img,x,y); xx[ii]=x; yy[ii]=y; ii=ii+1; break; case CV_EVENT_LBUTTONUP: break; } } Идёт видео, я нажимаю на окно, по клику мышки функция cvSetMouseCallback( "capture", myMouseCallback, (void*) frame); определяет координаты клика и вызывает Roia(img,x,y), которая считает среднее значение цвета. После пятого нажатия мышки вылетает ошибка, необработаное исключение, в консоли пишет: OpenCV Error: Assertion failed (dims <= 2 && data && (unsigned)i0 < (unsigned)si ze.p[0] && (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channel s()) && ((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1 << 3 ) - 1))*4) & 15) == elemSize1()) in unknown function, file C:\1\opencv\build\inc lude\opencv2/core/mat.hpp, line 552 и ссылается на: template<typename _Tp> inline _Tp& Mat::at(int i0, int i1) { CV_DbgAssert( dims <= 2 && data && (unsigned)i0 < (unsigned)size.p[0] && (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels()) && CV_ELEM_SIZE1(DataType<_Tp>::depth) == elemSize1()); return ((_Tp*)(data + step.p[0]*i0))[i1]; } в файле Mat.hpp __________________________________ В чём может быть собака?
  3. Начало записи и захват первого кадра IplImage* img1 = cvLoadImage("C:\\Test.bmp"); CvSize size = cvSize(img1->width ,img1->height); img2 = cvCreateImage( size, img1->depth, img1->nChannels ); cvResize(img1, img2); try{ writer = cvCreateVideoWriter(filename, CV_FOURCC('X','V','I','D'), fps, size, 1); } catch(cv::Exception){ timer2->Enabled=false;//остановка таймера инициализации } Если кадр(окно программы большое то вылетает Первый этап обработки исключения в "0x7553b727" в "kurs 8.exe": Исключение Microsoft C++: cv::Exception по адресу 0x0040db24.. Первый этап обработки исключения типа "System.Runtime.InteropServices.SEHException" в приложении kurs 8.exe хоть я и пробую его обработать траем(хочу что бы при исключения прога сама остановила выполнение без ошибок) но ошибка всё равно вылетает. В чём может быть причина? Как правильно исключение написать?
  4. Спасибо! буду пользоваться. Но пока решил проблему методом тыка... изменил код на IplImage* img1 = cvLoadImage("C:\\Test.bmp"); cvResize(img1, img2); cvWriteFrame(writer, img2); screen(); cvReleaseImage(&img1); и вроде пока работает...
  5. на вижуал студии вообще первый раз работаю...
  6. Закписываю вайлы бмп в видео файл. всё вроде хорошо, но после 2-3х минут нормальной записи вылетает Первый этап обработки исключения в "0x7553b727" в "kurs 8.exe": Исключение Microsoft C++: cv::Exception по адресу 0x001ee02c.. Вот код где вылтеат... public: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) {//таймер записи cvWriteFrame(writer, img2); screen(); img1 = cvLoadImage("C:\\Test.bmp"); cvResize(img1, img2); if(Condition()){timer1->Enabled=false;timer3->Enabled=true;}; // остановка записи ESC } В чём говно? и как сиправить?
  7. Сейчас занимаюсь похоже темой, только ищу доску на на скриншоте экрана и фигуры на ней, т.к. ничего не понимаю то прошу подсказать, как , или чем можно найти координаты углов доски и фигуры... или хотя бы координаты углов, фигуры от них выщитаю))
  8. windows form и opencv?

    всё) теперь не работает с разными окнами) Сначала создаю видео файл по размеру первого окна, затем каждый следующий кадр привожу к размерам первого с помощью cvResize и уже его записываю. Теперь уже новый вопрос))?? Как или с помощью каких функций на картинке найти определённый объект? елси есть допустим шаблон какаето сложная фигура, как её найти на картинке?
  9. windows form и opencv?

    Почему? ведь в видео файл сохраняется только картинка .бмп хранящаяся уже на диске?
  10. windows form и opencv?

    Вобщем милион впоросов и ниодного ответа((( Вот уменя идёт запись активного окна и всё хорошо, но захотел я выбрать дургое окно меньшего размера чем уменя размер видео файла, он вылетает с кучей ошибок(((
  11. windows form и opencv?

    В чём может быть проблема? Сначала screen(); делает скриншот актвиного окна и сохраняет на диск и сохраняет его const char *filename = "D:\\capture.avi"; screen(); IplImage* img1 = cvLoadImage("D:\\Test.bmp"); CvSize size = cvSize(img1->width,img1->height); double fps = 15; CvVideoWriter *writer = cvCreateVideoWriter(filename, CV_FOURCC('X','V','I','D'), fps, size, 1); assert(writer!=0); cvWriteFrame(writer, img1); cvReleaseVideoWriter(&writer); cvReleaseImage(&img1); в итоге должен получится ави файл с картинкой в нём. всё хорошо, но только есл разрешение у картинки больше 640 он вылетает с ошибкой.... если пробовать const char *filename = "D:\\capture.avi"; CvSize size = cvSize(1350,680); double fps = 15; CvVideoWriter *writer = cvCreateVideoWriter(filename, CV_FOURCC('X','V','I','D'), fps, size, 1); assert(writer!=0); cvReleaseVideoWriter(&writer); грубо говорря, созадли пустой ави файл. то максимальное разрешение с которым работает 1350,680 В чём говно?
  12. windows form и opencv?

    Терь новый вопрос))) Возможно ли сделать чтобы размер кадра изменялся в процессе записи? если я делаю запись активного окна с экрана, а в процессе записи меняю размер?
  13. windows form и opencv?

    Волшебный форум.... только написал и нашёл решение.... CvVideoWriter *writer = cvCreateVideoWriter(filename, CV_FOURCC('X','V','I','D'), fps, size, 0);
  14. windows form и opencv?

    Проблема решилась. Выбрал в свойствах проекта "Поддержка CLR среды(/clr)". Теперь другой вопрос... const char *filename = "D:\\capture.avi"; IplImage* img1 = cvLoadImage("D:\\11.jpg"); CvSize size = cvSize(img1->width, img1->height); double fps = 1; CvVideoWriter *writer = cvCreateVideoWriter(filename, CV_FOURCC('X','V','I','D'), fps, size, 0); assert(writer!=0); cvWriteFrame(writer, img1); cvReleaseVideoWriter(&writer); cvReleaseImage(&img1); Ругается на cvWriteFrame(writer, img1); Необработанное исключение типа "System.Runtime.InteropServices.SEHException" произошло в kurs
×