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

JoQeR

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

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

  • Посещение

Все публикации пользователя JoQeR

  1. Т.е. char c = cvWaitKey(33); держит процесс?? Таймер на интервал 50 мс. А что насчет cvReleaseCapture? Почему вылезает ошибка на несоотвествие типов? И насчет роста занимаемого объема памяти можете что-нибудь посоветовать? А то напрягает очень, здесь на форуме находил про утечки памяти, но здесь похоже что то другое. За раннее спасибо!
  2. Написал подобный код, всё-таки с использованием таймера , пока что эксперементирую)В результате вроде все работает нормально, НО при закрытии формы (клик по баттон2) процесс остается висеть в диспетчере задач. Я так понял, что CvCapture не удаляется и не отпускает программу? Или в чем то другом косячу? Также при попытке вызывать cvReleasecapture(&capture) возникает ошибка. Еще заметил, что со временем, пусть медленно н оверно, начинает расти объем памяти занимаемы процессом. Помогите пожалуйста) ... private: CvCapture *capture; IplImage *frame; ... private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) { // получаем кадр frame = 0; frame = cvQueryFrame( capture ); // Копирование IplImage в объект .NET типа Image Image ^image = gcnew Bitmap(frame->width, frame->height,frame->widthStep, PixelFormat::Format24bppRgb, IntPtr(frame->imageData)); // показываем this->pictureBox1->Image = image; char c = cvWaitKey(33); if (c == 27) { // нажата ESC timer1->Stop(); } } ... private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { timer1->Stop(); //cvReleaseCapture(&capture); // <----- ошибка this->Close(); } ...
  3. Спасибо, попробую реализовать потоками. А так сам пытался сделать используя этот пример MSDN
  4. Здравствуйте! Можете объяснить как для визуализации кадров полученых с камеры использовать Tick таймера? Никола написал в посте, что его использует.
  5. Очень интересный ресурс по первой ссылке!
  6. Тема очень интересная, хотелось бы посмотреть и почитать материал на русском. Может есть хорошие источники или статьи?
  7. Неоднократно видел темы с проблемами создания конечного приложения, которое будет работать на любом компьюторе, а не только на том где оно скомпилированно, но так и не смог найти решения, пробуя различные способы. Думаю здесь много опытных пользователей которые делали это. Огромная просьба кто-нибудь опишите все моменты (лучше пошагово) как создавать это самое независимое приложение. Как и что перекомпилоровать, какие файлы запихнуть в одну папку с экзешником, как избавиться от ошибок с LINK-ами (вечто что то не нравится компилятору), как изменить настойки самого проекта в "Свойствах проекта". В последнем, насколько я понял, куча нюансов и моментов, без которых приложение не скомпилируется или не будет работать, начиная от другой версии Framework до динамических или статических библиотек. Один из многих вариантов компиляции простейшей программы в режиме Release, причем так у всех моих прог с использованием OpenCV2.1. ( С Debug все летает) : #include "stdafx.h" #include <cv.h> #include <highgui.h> IplImage* image = 0; IplImage* src = 0; int main(int argc, char* argv[]) { //======================================= // получаем картинку image = cvLoadImage("d:/1.jpg",1); // окно для отображения картинки cvNamedWindow("original",CV_WINDOW_AUTOSIZE); // показываем картинку cvShowImage("original",image); // ждём нажатия клавиши cvWaitKey(0); // освобождаем ресурсы cvReleaseImage(& image); cvReleaseImage(&src); // удаляем окно cvDestroyWindow("original"); return 0; //======================================= } Вот ошибки, которые вылезают при компиляции: 1>------ Построение начато: проект: ProbOPCV, Конфигурация: Release Win32 ------ 1>Компиляция... 1>stdafx.cpp 1>Компиляция... 1>ProbOPCV.cpp 1>AssemblyInfo.cpp 1>Компиляция ресурсов... 1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0 1>Copyright (C) Microsoft Corporation. All rights reserved. 1>Компоновка... 1>ProbOPCV.obj : error LNK2001: неразрешенный внешний символ ""extern "C" void __cdecl cvReleaseImage(struct _IplImage * *)" (?cvReleaseImage@@$$J0YAXPAPAU_IplImage@@@Z)" 1>ProbOPCV.obj : error LNK2001: неразрешенный внешний символ ""void __cdecl cv::fastFree(void *)" (?fastFree@cv@@$$FYAXPAX@Z)" 1>ProbOPCV.obj : error LNK2001: неразрешенный внешний символ ""extern "C" struct _IplImage * __cdecl cvLoadImage(char const *,int)" (?cvLoadImage@@$$J0YAPAU_IplImage@@PBDH@Z)" 1>ProbOPCV.obj : error LNK2001: неразрешенный внешний символ ""extern "C" int __cdecl cvNamedWindow(char const *,int)" (?cvNamedWindow@@$$J0YAHPBDH@Z)" 1>ProbOPCV.obj : error LNK2001: неразрешенный внешний символ ""extern "C" void __cdecl cvShowImage(char const *,void const *)" (?cvShowImage@@$$J0YAXPBDPBX@Z)" 1>ProbOPCV.obj : error LNK2001: неразрешенный внешний символ ""extern "C" int __cdecl cvWaitKey(int)" (?cvWaitKey@@$$J0YAHH@Z)" 1>ProbOPCV.obj : error LNK2001: неразрешенный внешний символ ""extern "C" void __cdecl cvDestroyWindow(char const *)" (?cvDestroyWindow@@$$J0YAXPBD@Z)" 1>D:\Универ\С++\ProbOPCV\Release\ProbOPCV.exe : fatal error LNK1120: 7 неразрешенных внешних элементов 1>Журнал построения был сохранен в "file://d:\Универ\С++\ProbOPCV\ProbOPCV\Release\BuildLog.htm" 1>ProbOPCV - ошибок 8, предупреждений 0 ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
  8. Работа с камерами

    Спасибо большое! А насчет тегов, при создании собщения не были активными различные параметры (жирность шрифта и прочее), не знаю причины.
  9. Работа с камерами

    Я уже так делал, всё равно вылезает куча всяких исключений и в итоге не фоткает камера. Если через стандартный cvShow то фотографирует и показывает фото, всё нормально, т.е. так: private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { CvCapture *capture; capture = cvCreateCameraCapture(CV_CAP_ANY); //assert(capture); // узнаем ширину и высоту кадра //double width = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH); //double height = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT); // получаем кадр IplImage *frame=0; frame = cvQueryFrame(capture); //cvSaveImage("d:/11.jpg", frame); cvShowImage("capture", frame); // Копирование IplImage в объект .NET типа Image //Image ^image = gcnew Bitmap(frame->width, frame->height, frame->widthStep, //PixelFormat::Format24bppRgb, IntPtr(frame->imageData)); // Вставляем фото в pictureBox //this->pictureBox1->Image = image; // Освобождаем память cvReleaseCapture(&capture); //cvReleaseImage(&frame); } }; А если так, то не пашет ничего, убивает исключениями: private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { CvCapture *capture; capture = cvCreateCameraCapture(CV_CAP_ANY); assert(capture); // узнаем ширину и высоту кадра //double width = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH); //double height = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT); // получаем кадр IplImage *frame=0; frame = cvQueryFrame(capture); //cvSaveImage("d:/11.jpg", frame); //cvShowImage("capture", frame); // Копирование IplImage в объект .NET типа Image Image ^image = gcnew Bitmap(frame->width, frame->height, frame->widthStep, PixelFormat::Format24bppRgb, IntPtr(frame->imageData)); // Вставляем фото в pictureBox this->pictureBox1->Image = image; // Освобождаем память cvReleaseCapture(&capture); //cvReleaseImage(&frame); } };
  10. Работа с камерами

    У меня получилось загрузить изображение из файла в PictureBox, а вот с камеры никак пока. При использовании IplImage все работает и его распознает, а вот CvCapture никак не хочет признавать, пишет "использование неопределенного типа". Как его определить? И почему так?
  11. Работа с камерами

    Уважаемые, как сделать чтобы не воспроизводилось видео, а брался один кадр и вставлялся в PictureBox, т.е. тупо фоткало при нажатии на кнопку на форме? Пробовал использовать приведенный пример от Nicolа работает на ура, вебкамера включается, видео воспроизводится, но мне не нужно всех этих сложных функций. Объясните пожалуйста что конкретно нужно для фото по его примеру. Пытался использовать участки кода, всё безуспешно.
×