1. OpenCV шаг за шагом. Введение.
2. OpenCV шаг за шагом. Установка.
3. OpenCV шаг за шагом. Hello World.
4. OpenCV шаг за шагом. Загрузка картинки.
5. OpenCV шаг за шагом. Вывод видео
6. OpenCV шаг за шагом. Ползунок
7. OpenCV шаг за шагом. Захват видео с камеры
Работа с камерой почти ничем не отличается от работы с видео.
Просто вместо функции cvCreateFileCapture() нужно использовать функцию cvCreateCameraCapture(), которая в качестве параметра принимает не название файла, а идентификатор камеры.
Данная программа представляет собой удобную утилиту для работы с камерой.
Программа подключается и начинает захват с камеры с помощью cvCreateCameraCapture(), далее получает ширину и высоту кадра с помощью cvGetCaptureProperty(). А потом в цикле при помощи cvQueryFrame() получает картинку с камеры и выводит в окошко.
При нажатии клавиши ESC программа выйдет из цикла и завершится, а при нажатии клавиши Enter текущий кадр будет сохранён в файл ImageN.jpg, где N — номер кадра, начиная от 0 (Image0.jpg, Image1.jpg и т.д.)
#include <cv.h> #include <highgui.h> #include <stdlib.h> #include <stdio.h> int main(int argc, char* argv[]) { // получаем любую подключённую камеру CvCapture* capture = cvCreateCameraCapture(CV_CAP_ANY); //cvCaptureFromCAM( 0 ); assert( capture ); //cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 640);//1280); //cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, 480);//960); // узнаем ширину и высоту кадра double width = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH); double height = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT); printf("[i] %.0f x %.0f\n", width, height ); IplImage* frame=0; cvNamedWindow("capture", CV_WINDOW_AUTOSIZE); printf("[i] press Enter for capture image and Esc for quit!\n\n"); int counter=0; char filename[512]; while(true){ // получаем кадр frame = cvQueryFrame( capture ); // показываем cvShowImage("capture", frame); char c = cvWaitKey(33); if (c == 27) { // нажата ESC break; } else if(c == 13) { // Enter // сохраняем кадр в файл sprintf(filename, "Image%d.jpg", counter); printf("[i] capture... %s\n", filename); cvSaveImage(filename, frame); counter++; } } // освобождаем ресурсы cvReleaseCapture( &capture ); cvDestroyWindow("capture"); return 0; }
Посмотрим результаты работы (камера – дешёвая USB Gembird 69U):
OpenCV v1.0 показывает и сохраняет картинку минимального разрешения камеры 320×240
Установить большее разрешение при помощи cvSetCaptureProperty() не даёт
А вот что выдаёт последняя стабильная версия OpenCV 2.1
у которой, кстати, сразу в комплекте идут скомпилированные lib-файлы C:\DevTools\OpenCV2.1\lib\ и которая завелась даже под VC++ 6.0
Установка аналогична 2.0 только теперь нужно линковать библиотеки
cxcore210.lib cv210.lib highgui210.lib cvaux210.lib
а теперь раскомментируем строчки
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 640);//1280); cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, 480);//960);
так же заработало и при 1280×960.
Однако, должен отметить, что не всегда удаётся установить нужное разрешение штатными средствами и приходится делать финт ушами.
новые функции:
#define cvCaptureFromCAM cvCreateCameraCapture CVAPI(CvCapture*) cvCreateCameraCapture( int index );
— начинает захват с камеры
index — номер камеры в системе (состоит из суммы порядкового номера и т.н. домена)
0 — первая попавшаяся камера(можно использовать, если работает всего одна камера)
возможные домены:
#define CV_CAP_ANY 0 // autodetect #define CV_CAP_MIL 100 // MIL proprietary drivers #define CV_CAP_VFW 200 // platform native #define CV_CAP_V4L 200 #define CV_CAP_V4L2 200 #define CV_CAP_FIREWARE 300 // IEEE 1394 drivers #define CV_CAP_FIREWIRE 300 #define CV_CAP_IEEE1394 300 #define CV_CAP_DC1394 300 #define CV_CAP_CMU1394 300 #define CV_CAP_STEREO 400 // TYZX proprietary drivers #define CV_CAP_TYZX 400 #define CV_TYZX_LEFT 400 #define CV_TYZX_RIGHT 401 #define CV_TYZX_COLOR 402 #define CV_TYZX_Z 403 #define CV_CAP_QT 500 // QuickTime #define CV_CAP_UNICAP 600 // Unicap drivers #define CV_CAP_DSHOW 700 // DirectShow (via videoInput)
CVAPI(int) cvSaveImage( const char* filename, const CvArr* image, const int* params CV_DEFAULT(0) );
— сохраняет изображение в файл
filename — имя файла
image — изображение для сохранения
при успешном сохранении функция вернёт 1, а при неудаче — 0.
Далее: 8. OpenCV шаг за шагом. Запись видео
Дополнительно:
24. Работа с камерой через библиотеку videoInput
OpenCV и работа с видео
58 комментариев на «“7. OpenCV шаг за шагом. Захват видео с камеры”»
Скопировал пример один к одному. Все скомпилировалось, программа запускается, но выдает разрешение 0*0 и серый квадрат.
Камера в других приложения (проводник, VLC) нормально работает.
В чем может быть дело?
версия OpenCV?
какая камера?
пробовали изменить разрешение/ не изменять разрешения (оставить дефолтным)?
OpenCV 2.2.0, ОС Windows, VC++ 2005 Express Edition.
Библиотеки скомпилировались без ошибок, сделал все уроки со 2-го по 23-й, все работает, кроме захвата с камеры.
Камера в китайском телефоне, подключается телефон по USB, работает во всех приложениях без драйверов.
Пробовал не указывать разрешение, 320*240, 540*480.
Результат — серый квадрат, а в консоли информация о разрешении 0*0.
640*480 конечно.
похоже проблема именно в доступе к камере — попробуйте использовать библиотекуvideoInput
Была та же проблема. Помогает videoInput. И еще у меня заработало после включения программы WebcamMax. Кто-нибудь знает как работает эта программа?
Тоже самое, что и у «Upryamyj»-серый квадрат и разрешение 0*0. Что делать? Может, проблемы с камерой?
OpenCV 2.2, Windows, Code::Blocks.
Телефон от philips в качестве вебкамеры.
Пробывал менять — всё равно серый экран и выдаёт в качестве разрешения 0*0.
как видите — у вас с Upryamyj-м и камеры чем-то похожи, так что похоже проблема именно в доступе к камере — попробуйте использовать библиотекуvideoInput
У меня камера нормальная, также разрешение 0 на 0 если использовать cvCreateCameraCapture, но videoinput к счастью помогла 🙂
else if(c == 13) { // Enter
В Линукс не работает. Поменял на 10 запустилось. Видимо в Линуксе в конце строки LF а не CR
верно — в линуксе коды клавиш отличаются 🙂
Уважаемый Господин! Возник у меня вопрос вот я сейчас пробежался и дошел увидел как раз урок — то что мне надо, это захват изображения с камеры, попробывал не работает, хотя камера не с телефона нормальная 720p, Посмотрел библиотеку videoInput и вопрос смогу ли я захватив камеры с этой библиотекой сохранить его в файл, и смогу ля я к этому захваченному изображению применять функции из OpenCV прям то есть находу, а не открывая сохраненный видеофайл заново Я нуб в этом деле) Спасибо за Help))))
да. там же висходнике есть комментарий:
так что в image уже хранится данные захваченной картинки и к ней можно применять средства OpenCV.
Не могу сделать захват со второй камеры. Opencv 2.2 win QtSDK 4.7.4
cvCreateCameraCapture -индексам <0…10, 10…99, 200…299 всегда соответствует захват 1 камеры, остальные возвращает нулевыми
Обе камеры определяются как видеоустройства 1 и 2. Штатными средствами ОС можно с них получить картинку.
В faq ocv видел ссылки на модуль cvcam с инструментарием для выбора камеры, но, похоже из текущих версий библиотеки его убрали.
Вообще стоит задача получения синхронных снимков с нескольких камер.
к сожалению, пока руки никак не дойдут поработать со стереозрением, хотя в планах это и есть (для начала, хотя бы купить две одинаковых камеры :)))videoInput , а под Linux — libv4l2cam .
Для конкретных задач, похоже, лучше всё же использовать не штатный захват OpenCV, а кастомные решения.
Например, под Windows — можно попробовать библиотеку
да videoinput помог с решением, спасибо.
серый квадрат вылечился заменой на cvCaptureFromCAM(1)
Добрый день. А нет ли здесь утечки памяти? не нужно ли делать в конце каждого цикла cvReleaseImage(&frame)?
нет. с картинкой frame, получаемой от cvQueryFrame() ничего делать не нужно.
А как подключать IP-камеры?
если камера выдаёт картинку в MJPG, то посмотритесюда
Спасибо за быстрый ответ и ссылочку!
Однако вопросы ещё имеются.
1. Нельзя ли для работы с IP-камерой использовать возможности только самой OpenCV?
Работать-то с USB-камерами в OpenCV очень просто: в одной строке захватил камеру, в другой — считал кадр, в третьей — показал его. Хочется такого же комфорта и с IP-камерой.
2. Ваш вариант работает только с MJPEG, а как работать с MPEG-4, H.264, наконец, просто JPEG?
3. Как всё это организовать на чистом Си (без "++")?
если OpenCV собран с поддержкой FFmpeg и ffmpeg позволяет работать, то должен подхватить 😉
т.е. будет достаточно сделать стандартный
Спасибо за быстрый ответ!
Как узнать, собран OpenCV с поддержкой FFmpeg или нет?
Я имею ввиду вариант, когда OpenCV не собирается из исходников (CMake и всё такое), а используется «из коробки». Интересуют последние, на текущий момент, версии OpenCV: 2.4.3… 2.4.5.
Добрый вечер! Столкнулся с проблемой: Скопировал пример, все работает, НО! изображение идет с ТВ-тюнера! Кто-нибудь сталкивался с подобным? Какой параметр cvCreateCameraCapture( int index ) указать для обычной веб-камеры? Как в программе указать, с какой камерой (устройством видеозахвата) нужно работать?
Перечитал форум, разобрался)))
CvCapture* capture = cvCaptureFromCAM( 1 );
какой протокол использует opencv при работе с камерами?
есть ли примеры по кадровой обработки видео, т.е. в реальном времени сравнить два кадра, пр., текущий и предыдущий кадр?
Ребят, нужна помощь. Хочу эту программу совместить с программой для подсчета и определения доминирующих цветов в изображении. Нужно чтобы камера по нажатию кнопки фотографировала и определяла доминирующие цвета в полученном изображении. Как это правильно сделать? Вот ссылка на прогу, определяющую доминирующие цветаrobocraft.ru/blog/computervision/1063.html
Не подскажите как вывести или записать изображения с экрана? Как захватить изображение целого экрана?
Здравствуйте.этой страницы успешно заработал. Подскажите пожалуйста как теперь мне например воспользоватся функцией cvSmooth тоесть как из переменной типа «Mat» взять данные типа «IplImage». Я Си++ почти незнаю, только начал изучать, а попробовать хочется.
Как у некоторых выше, и я получил черный экран. Вебка USB, дрова винда сама поставила. Библиотеку videoInput мне не удалось прикрутить к Eclipse Kepler + MinGW 4.8.1 + OpenCV 3.1.0. Но пример с
Привет!cvSmooth() считается устаревшей и вместо неё рекомендуется использовать: GaussianBlur() , blur(), medianBlur()
Если используется интерфейс C++, то и функции логичнее использовать С++-ые, которые работают с cv::Mat.
Хотя
Преобразовать cv::Mat в IplImage можно при помощи оператораIplImage .
Можно примерчик с этим оператором. После Си не совсем въеду как им пользоватся.
Можно примерчик с этим оператором. После Си не совсем въеду как им пользоватся. функцию взял для примера, ведь во всех мануалах подобные функции. Не подскажите где почитать на русском по поводу устаревших и их рекомендуемой замены? Цель как и у многих — научится распознавать предметы, попутно изучая Си++.
Про устаревшие и замену — только в документации.
Не выходит чет у меня:
P.S нужно ли специально освобождать память как в здешних мануалах, в примере с VideoCapture сказано чтото про автоматически освободится или я не так понял.
С первым разобрался, огромное спасибо за помощь. Кому интересно надо было сделать так:
Второй вопрос остается в силе.
Здравствуйте! Сделал все как указано в уроке, но при запуске программы получаю черное окошко, в котором по идее должно отображаться изображение с вебки. Вебка при этом включается, но изображение не выводится, только черный квадрат. Как это можно решить?
Visual Studio 2015, OpenCV 3.1.0
Попробуйте пройтись отладчиком (OpenCV и работа с видео )
Не очень разобрался, с тем как с этим работать, не могли бы описать действия?
Суть еще в том, что, если данный код закомпилить на 2012 студии то проблем не возникает, но хотелось бы разобраться в чем проблема в 15 студии и как это можно решить
Все запускаю на установленной Visual Studio 2017, opencv запускаю через Cmake. При запуске в верхнем левом углу все как надо написано(В главном окне программы), Opencv — Visual Studio. Но при запуске кода вылазеют вот такие ошибки.
Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка (активно) E1696 не удается открыть источник файл «cv.h» ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 1
Ошибка (активно) E1696 не удается открыть источник файл «highgui.h» ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 2
Ошибка (активно) E0020 идентификатор «CvCapture» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 9
Ошибка (активно) E0020 идентификатор «capture» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 9
Ошибка (активно) E0020 идентификатор «cvCreateCameraCapture» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 9
Ошибка (активно) E0020 идентификатор «CV_CAP_ANY» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 9
Ошибка (активно) E0020 идентификатор «cvCaptureFromCAM» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 10
Ошибка (активно) E0020 идентификатор «assert» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 11
Ошибка (активно) E0020 идентификатор «ширину» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 17
Ошибка (активно) E0065 требуется точка с запятой ";" ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 19
Ошибка (активно) E0020 идентификатор «cvGetCaptureProperty» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 24
Ошибка (активно) E0020 идентификатор «CV_CAP_PROP_FRAME_HEIGHT» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 24
Ошибка (активно) E0020 идентификатор «width» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 25
Ошибка (активно) E0020 идентификатор «IplImage» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 27
Ошибка (активно) E0020 идентификатор «frame» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 27
Ошибка (активно) E0020 идентификатор «cvNamedWindow» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 29
Ошибка (активно) E0020 идентификатор «CV_WINDOW_AUTOSIZE» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 29
Ошибка (активно) E0020 идентификатор «cvQueryFrame» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 40
Ошибка (активно) E0020 идентификатор «cvShowImage» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 43
Ошибка (активно) E0020 идентификатор «cvWaitKey» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 45
Ошибка (активно) E0020 идентификатор «кадр» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 51
Ошибка (активно) E0065 требуется точка с запятой ";" ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 53
Ошибка (активно) E0020 идентификатор «cvSaveImage» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 56
Ошибка (активно) E0029 требуется выражение ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 57
Ошибка (активно) E0020 идентификатор «ресурсы» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 61
Ошибка (активно) E0020 идентификатор «cvDestroyWindow» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 63
Ошибка C1010 непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include «stdafx.h»" в источник. ConsoleApplication3 c:\users\user\source\repos\consoleapplication3\consoleapplication3\consoleapplication3.cpp 66
Проверьте — прописаны ли пути до заголовочных файлов OpenCV в настройках проекта.
см. videocapture_basic.cpp
Ошибка по отсутствию файлов cv.h,highgui.h и т.д, ушла.
Остались ошибки, отсутствия индентификаторов:
Ошибка (активно) E0020 идентификатор «CvCapture» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 9
Ошибка (активно) E0020 идентификатор «capture» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 9
Ошибка (активно) E0020 идентификатор «cvCreateCameraCapture» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 9
Ошибка (активно) E0020 идентификатор «CV_CAP_ANY» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 9
Ошибка (активно) E0020 идентификатор «cvCaptureFromCAM» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 10
Ошибка (активно) E0020 идентификатор «assert» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 11
Ошибка (активно) E0020 идентификатор «ширину» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 17
Ошибка (активно) E0065 требуется точка с запятой ";" ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 19
Ошибка (активно) E0020 идентификатор «cvGetCaptureProperty» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 24
Ошибка (активно) E0020 идентификатор «CV_CAP_PROP_FRAME_HEIGHT» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 24
Ошибка (активно) E0020 идентификатор «width» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 25
Ошибка (активно) E0020 идентификатор «IplImage» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 27
Ошибка (активно) E0020 идентификатор «frame» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 27
Ошибка (активно) E0020 идентификатор «cvNamedWindow» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 29
Ошибка (активно) E0020 идентификатор «CV_WINDOW_AUTOSIZE» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 29
Ошибка (активно) E0020 идентификатор «cvQueryFrame» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 40
Ошибка (активно) E0020 идентификатор «cvShowImage» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 43
Ошибка (активно) E0020 идентификатор «cvWaitKey» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 45
Ошибка (активно) E0020 идентификатор «кадр» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 51
Ошибка (активно) E0065 требуется точка с запятой ";" ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 53
Ошибка (активно) E0020 идентификатор «cvSaveImage» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 56
Ошибка (активно) E0029 требуется выражение ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 57
Ошибка (активно) E0020 идентификатор «ресурсы» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 61
Ошибка (активно) E0020 идентификатор «cvDestroyWindow» не определен ConsoleApplication3 c:\Users\User\source\repos\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 63
Выше описанные ошибки исправил. Вот новые, как исправить?
Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка C4996 ‘cv::flann::Index_’: was declared deprecated ConsoleApplication2 c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\opencv2\flann\flann.hpp 233
Ошибка C2857 ‘#include’ statement specified with the /Ycstdafx.h,stdafx.hpp command-line option was not found in the source file ConsoleApplication2 c:\users\user\documents\visual studio 2015\projects\consoleapplication2\consoleapplication2\stdafx.cpp 9
Вторую исправил, осталась первая. Вот, часть кода из класса flann.hpp, который вызывает ошибку, ошибка на странице с функцией public.
/**
* @deprecated Use GenericIndex class instead
*/
template class FLANN_DEPRECATED Index_ {
public:
typedef typename L2::ElementType ElementType;
typedef typename L2::ResultType DistanceType;
Index_(const Mat& features, const ::cvflann::IndexParams& params);
~Index_();
void knnSearch(const vector& query, vector& indices, vector& dists, int knn, const ::cvflann::SearchParams& params);
void knnSearch(const Mat& queries, Mat& indices, Mat& dists, int knn, const ::cvflann::SearchParams& params);
int radiusSearch(const vector& query, vector& indices, vector& dists, DistanceType radius, const ::cvflann::SearchParams& params);
int radiusSearch(const Mat& query, Mat& indices, Mat& dists, DistanceType radius, const ::cvflann::SearchParams& params);
void save(std::string filename)
{
Все исправилось, предьидущая ошибка исправилась, выключением precompiled filters в разделе input, опций. Предпредидущая ошибка исправилась, копированием класов *.h из opencv, в непосредственно директории по умолчанию include directories в VC++ Directories. И все запустилось уже с флагом success, но свмо уже приложение, появилось на уровне cmd и пишет: Необработанное исключение по адресу 0x7789D4C2 (ntdll.dll) в ConsoleApplication3.exe: 0xC000007B: Программа "%hs" не предназначена для выполнения в Windows или содержит ошибку. Попробуйте установить программу еще раз с исходного установочного носителя либо обратитесь к системному администратору или поставщику программного обеспечения за поддержкой. Состояние ошибки 0x.
При отладке добавляет, вот это: Необработанное исключение по адресу 0x77849510 (ntdll.dll) в ConsoleApplication3.exe: Код инструментирования VTGuard обнаружил попытку использования недопустимой таблицы виртуальных функций.
Вызвано исключение по адресу 0x00000030 в ConsoleApplication3.exe: 0xC0000005: нарушение прав доступа при исполнении по адресу 0x00000030.
Вот, дезасамблированный код, на 7 строке он указывает, что там ошибка. 77AED4B2 jne string L"\??\%C:"+4944Ch (77AED4BCh)
77AED4B4 push esi
77AED4B5 push 0FFFFFFFFh
77AED4B7 call _NtTerminateProcess@8 (77A8C5B0h)
77AED4BC push esi
77AED4BD call _RtlRaiseStatus@4 (77A907A0h)
77AED4C2 mov eax,dword ptr fs:[00000018h]
77AED4C8 test byte ptr [eax+0FCAh],20h
77AED4CF jne LdrShutdownThread+0FFFFFC91h (77A72A01h)
77AED4D5 xor esi,esi
77AED4D7 jmp LdrShutdownThread+0FFFFFDA7h (77A72B17h)
В логе по статусу дебагинга кода флаг success стоит.
python3,opencv — распознавание дорожных знаков на фотографии .Linux
Как заменить видеокамеру на фотографию?
использовать cv2.imread()
Здравствуйте.
Один кадр я беру так:
Как мне скопировать этот кадр и дальше обрабатывать его независимо?
вот так не работает, вернее работает но нарисованое на frame попадает в frame_2.
Спасибо!
если у вас черное окно попробуйте так.