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

windows form и opencv?

Recommended Posts

Как подключить?visual studio 10 c++

Сразу скажу в этом ничего почти не понимаю. В консольной версии работает, а с формой нет даже если только подключить #include <highgui.h> и ничего больше не добавлять.

Куча ошибок

1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\opencv2/core/types_c.h(284): error C3862: cvRound: неуправляемую функцию невозможно компилировать с параметрами /clr:pure или /clr:safe

1> Встроенный машинный код на языке ассемблера в управляемом коде не поддерживается

1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\opencv2/core/types_c.h(284): error C3645: cvRound: __clrcall невозможно использовать с функциями, скомпилированными в машинный код

1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\opencv2/core/operations.hpp(78): error C3862: CV_XADD: неуправляемую функцию невозможно компилировать с параметрами /clr:pure или /clr:safe

1> Встроенный машинный код на языке ассемблера в управляемом коде не поддерживается

1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\opencv2/core/operations.hpp(78): error C3645: CV_XADD: __clrcall невозможно использовать с функциями, скомпилированными в машинный код

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Проблема решилась.

Выбрал в свойствах проекта "Поддержка 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Волшебный форум....

только написал и нашёл решение....

CvVideoWriter *writer = cvCreateVideoWriter(filename, CV_FOURCC('X','V','I','D'), fps, size, 0);

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Терь новый вопрос)))

Возможно ли сделать чтобы размер кадра изменялся в процессе записи?

если я делаю запись активного окна с экрана, а в процессе записи меняю размер?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Думаю в одном файле нельзя. Можно создать другой файл при изменении размера окна, a при воспроизведении показывать их последовательно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В чём может быть проблема?

Сначала 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

В чём говно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вобщем милион впоросов и ниодного ответа(((

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

С выбором нового окна надо все закрыть, освободить память, выделенную под изображения, закрыть записывальщик видео. Затем все пересоздать и записывать в новый файл.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

всё) теперь не работает с разными окнами)

Сначала создаю видео файл по размеру первого окна, затем каждый следующий кадр привожу к размерам первого с помощью cvResize и уже его записываю.

Теперь уже новый вопрос))??

Как или с помощью каких функций на картинке найти определённый объект?

елси есть допустим шаблон какаето сложная фигура, как её найти на картинке?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×