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

Поиск по сайту

Showing results for tags 'opencv'.



More search options

  • Search By Tags

    Введите теги через запятую.
  • Search By Author

Тип содержимого


Категории и разделы

  • Пакет OpenCV
    • OpenCV
    • Новости
    • Вопросы взаимодействия OpenCV + GDI, GDI+
  • Дополненная реальность (ARToolkit и др.)
    • ARToolkit
  • Нейросети
    • Вопросы по нейросетям и ИИ
  • Общие вопросы
    • Обсуждение общих вопросов
  • Другое

Найдено 93 результата

  1. OpenCV survey 2018

    Привет! Команда OpenCV приглашает вас принять участие в опросе: https://opencv.org/survey-2018.html (powered by Google Docs). Спасибо!
  2. C:\opencv\build\include

    При попытке перейти от использовавшейся ранее с Фортаном VS2013 на использование opencv c++ столкнулся с трудностями, хотя простейшие программы cpp прошли, но попытки использовать программы из примеров opencv не проходят. Характерная ошибка: Ошибка 1 error C1083: Не удается открыть файл включение: pch.h: No such file or directory c:\users\frost\desktop\documents\visual studio 2013\projects\maincv\maincv.cpp 27 1 main Хотя файлы pch.h в библиотеке присутствуют во множественном числе. При попытках использовать другие программы отсутствуют другие *.h. Попытки закачать из интернета отсутствующий файл проблему не решили. Настораживает также то, что многие #include содержат opencv2, который в закаченном пакете opencv 4.8.0 отсутствует. Соответственно при назначении директорий эта директория не была добавлена.
  3. Всем доброго времени суток! Уважаемые господа форумчане, нужен ваш совет каким путем пойти чтобы не потратить даром времени и не наломать дров. Адаптирую программу для распознавания лиц из книги Mastering OpenCV глава 8 под свои нужды. Хочу чтобы появилась возможность сохранять модель распознавания лиц, и в любой момент после перезапуска программы в нее можно было добавить новые лица, метки или удалить старые. На данный момент нашел способ который сохраняет модель в файл и загружает ее из файла, но в моем случае это не подходит, так как если после перезапуска программы я вновь начну обучать модель, а затем сохранять ее в ранее созданный файл, все старые данные удаляться и запишеться только текущая тренированная модель: Ptr<FaceRecognizer> model = createEigenFaceRecognizer(); model->train(array of images,array of lables); model->save("C:\\eigendataset.yml"); model->load("C:\\eigendataset.yml"); Прошу посоветовать оптимальный способ для добавления или удаления лиц из файла eigendataset.yml Или может существует более правильный способ для онлайн тренировки модели с последующем сохранением, изменением и загрузкой? Заранее благодарю за советы.
  4. Здравствуйте , подскажите как добавить координаты на линии сгибов контура отмеченные желтыми стрелками, что бы в дальнейшем измерять евклидово расстояние между координатами Пока только получилось найти экстремальные точки
  5. помогите пожалуйста с выводом информации над контуром рамки, как отобразить размер рамки, если известно что размер товара 670 пикселей, длина физ 4,1 мм, и как провести центр оси на объект? opencv версии 4.7.0.68, отредактируйте код. ажение текста над рамкой Задать вопрос спросил Cегодня Изменено сегодня Просмотрено 15 раз -1 помогите пожалуйста с выводом информации над контуром рамки, как отобразить размер рамки, если известно что размер товара 670 пикселей, длина физ 4,1 мм, и как провести центр оси на объект? opencv версии 4.7.0.68, отредактируйте код. import numpy as np import cv2 cap = cv2.VideoCapture ( 1 ) kernel = np.ones ( (2 , 2) , np.uint8 ) while (True): # Capture frame-by-frame ret , frame = cap.read () # Our operations on the frame come here gray = cv2.cvtColor ( frame , cv2.COLOR_BGR2GRAY ) gray = cv2.GaussianBlur ( gray , (7 , 7) , 0 ) gray = cv2.medianBlur ( gray , 5 ) # to remove salt and paper noise # to binary ret , thresh = cv2.threshold ( gray , 128 , 128 , 128 ) # to detect white objects # to get outer boundery only thresh = cv2.morphologyEx ( thresh , cv2.MORPH_GRADIENT , kernel ) # to strength week pixels thresh = cv2.dilate ( thresh , kernel , iterations = 1 ) im2 = contours , hierarchy = cv2.findContours ( thresh , cv2.RETR_EXTERNAL , cv2.CHAIN_APPROX_SIMPLE ) if len ( contours ) > 0: cv2.drawContours ( frame , contours , -1 , (0 , 255 , 0) , 3 ) # find the biggest countour (c) by the area c = max ( contours , key = cv2.contourArea ) x , y , w , h = cv2.boundingRect ( c ) # draw the biggest contour (c) in green cv2.rectangle ( frame , (x , y) , (x + w , y + h) , (255 , 0 , 0) , 2 ) # Display the resulting frame cv2.imshow ( 'frame' , frame ) if cv2.waitKey ( 27 ) & 0xFF == ord ( 'q' ): break # When everything done, release the capture cap.release () cv2.destroyAllWindows ()
  6. Вышла OpenCV 3.1

    Обновилась OpenCV до версии 3.1 http://opencv.org/opencv-3-1.html Changes The detailed list of changes since 3.0 can be found at https://github.com/Itseez/opencv/wiki/ChangeLog. Here is the short summary: A lot of new functionality has been introduced during Google Summer of Code 2015: “Omnidirectional Cameras Calibration and Stereo 3D Reconstruction” – opencv_contrib/ccalib module (Baisheng Lai, Bo Li) “Structure From Motion” – opencv_contrib/sfm module (Edgar Riba, Vincent Rabaud) “Improved Deformable Part-based Models” – opencv_contrib/dpm module (Jiaolong Xu, Bence Magyar) “Real-time Multi-object Tracking using Kernelized Correlation Filter” – opencv_contrib/tracking module (Laksono Kurnianggoro, Fernando J. Iglesias Garcia) “Improved and expanded Scene Text Detection” – opencv_contrib/text module (Lluis Gomez, Vadim Pisarevsky) “Stereo correspondence improvements” – opencv_contrib/stereo module (Mircea Paul Muresan, Sergei Nosov) “Structured-Light System Calibration” – opencv_contrib/structured_light (Roberta Ravanelli, Delia Passalacqua, Stefano Fabri, Claudia Rapuano) “Chessboard+ArUco for camera calibration” – opencv_contrib/aruco (Sergio Garrido, Prasanna, Gary Bradski) “Implementation of universal interface for deep neural network frameworks” – opencv_contrib/dnn module (Vitaliy Lyudvichenko, Anatoly Baksheev) “Recent advances in edge-aware filtering, improved SGBM stereo algorithm” – opencv/calib3d and opencv_contrib/ximgproc (Alexander Bokov, Maksim Shabunin) “Improved ICF detector, waldboost implementation” – opencv_contrib/xobjdetect (Vlad Shakhuro, Alexander Bovyrin) “Multi-target TLD tracking” – opencv_contrib/tracking module (Vladimir Tyan, Antonella Cascitelli) “3D pose estimation using CNNs” – opencv_contrib/cnn_3dobj (Yida Wang, Manuele Tamburrano, Stefano Fabri) Many great contributions made by the community, such as: Support for HDF5 format New/Improved optical flow algorithms Multiple new image processing algorithms for filtering, segmentation and feature detection Superpixel segmentation and much more IPPICV is now based on IPP 9.0.1, which should make OpenCV even faster on modern Intel chips opencv_contrib modules can now be included into the opencv2.framework for iOS Newest operating systems are supported: Windows 10 and OSX 10.11 (Visual Studio 2015 and XCode 7.1.1) Interoperability between T-API and OpenCL, OpenGL, DirectX and Video Acceleration API on Linux, as well as Android 5 camera. HAL (Hardware Acceleration Layer) module functionality has been moved into corresponding basic modules; the HAL replacement mechanism has been implemented along with the examples
  7. Здравствуйте. Допустим, откалибровал камеру при разрешении 1280х1024, получил матрицу внутренних параметров и коэффициенты. Теперь, вывожу видео в разрешении 800х600. Документацию https://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html читал. Поэтому несколько вопросов: 1. Насколько я понял, нужно маштабировать только матрицу внутренних параметров, не трогать коэффициенты? 2. Как маштабировать? Достаточно ли просто сделать fx` = fx * (w`/w) и аналогично для fy, где w` - новая ширина кадра, а w - ширина кадра, когда создавалась матрица. 3. Как потом быть с getOptimalNewCameraMatrix ? Подставлять в неё уже отмаштабированную матрицу? Или оригинальную, а потом маштабировать обе?
  8. Добрый день Видеопоток обрабатывается в реальном времени и путем манипуляций получается следующее изображение Каким способом можно убрать точки, которые, по сути своей, являются шумом Основные линии в процессе работы остаются, а точки просто рандомизируются повсюду Erode/Dilate уже используется, ровно как и размытие изображения
  9. Добрый день, в общем то рисунок тот же, что и в соседней теме, но уже иная задача Планируется идентифицировать пользователя по рисунку вен его руки Для этого, по логике вещей, требуется составить полный шаблон венозной структуры Но рисунок на потоке непостоянный, основные вены, да, постоянны, но есть тонкие, и их отражение то появляется, то убыывает В связи с этим вопрос Как можно составить шаблон, в который будут входить вены? По сути, нужно взять несколько изображений и наложить друг на друга, удаляя сегменты, которые встречаются единожды Но вопрос, как это сделать, если рука не зафиксирована в одной точке? Прикрепляю два изображения однйо руки
  10. Приветствую! Нужно с точностью хотя бы в десятые градуса найти поворот объекта относительно оригинала на изображении. Что бы исключить влияние вешней среды все изображения для опытов создаю в Blender`е (разумеется рендер с одинаковыми настройками и положением камеры, размер кадра 1600х1200). Из него же взял и cameraMatrix. На всякий случай так же пробовал в нём же рендерить шаблон шахматной доски под разными ракурсами, потом cameraCalibrate для получения cameraMatrix и distortionCoefficient в общем всё как по примерам OpenCV. Проверял perViewErrors - для каждого изображения доски в пределах 0.1-0.2 пикселя. Для начала рендерю изображение просто квадрата, который будет использоваться как оригинальный, под неким углом наклона камеры, в OpenCV нахожу положение 4 углов на изображении - imagePoints. Знаю, размер стороны квадрата и задаю координаты 3D точек, к примеру: std::vector<cv::Point3d> objectPoints; objectPoints.push_back(cv::Point3d(0.0f, 0.0f, 0.0f)); objectPoints.push_back(cv::Point3d(50.0f, 0.0f, 0.0f)); objectPoints.push_back(cv::Point3d(50.0f, 50.0f, 0.0f)); objectPoints.push_back(cv::Point3d(0.0f, 50.0f, 0.0f)); Дальше загоняю это в solvePnP: cv::solvePnP(objectPoints, imagePoints, cameraMatrix, distCoeffs, rvec, tvec, false, cv::SOLVEPNP_ITERATIVE); Я правильно понимаю, что при расчёте все методы solvePnP исходят из того, что все 4 точки objectPoints то же должны оказаться лежащими на одной 3D плоскости? Я пытался вникнуть хотя бы в метод ITERATIVE, но трудновато. Получаю rvec, tvec. Пробовал разные методы (более лучший результат даёт AP3P). Теперь, я так понимаю, если применить rvec (точнее, получить матрицу трансформации из вектора сначала) и tvec к objectPoints я получу их 3D положение в системе координат камеры? А как быть, в случае, если точки imagePoints вычисляются с какими-либо погрешностями? К примеру, в 2-5 пикселей? Имею ввиду, что можно предпринять, что бы скорректировать результаты solvePnP до более правильных? Может увеличить количество точек до 5-6 ? Пробовал solve RANSAC, результат то же неоднозначный, но, возможно, нужно ещё больше точек? Может быть в сами координаты точек на изображение заложить какую-либо информацию? Имею ввиду, к примеру, угол между ними должен быть 90 градусов, либо расстояния определённые... В общем, ищется способ повышения точности rvec (в особенности) и tvec, когда уже невозможно точнее вычислить положение imagePoints. Либо какая-либо отдельная библиотека для solvePnP, что бы можно было задать дополнительные ограничения, из разряда - угол между 3D точками на плоскости после применения rvec и tvec должны быть 90 градусов и т.д.
  11. Предназначение getoptimalnewcameramatrix

    И снова здравствуйте. Поясните, пожалуйста, предназначение функции и где её использовать? getoptimalnewcameramatrix После прочтения документации по ссылке - как в анекдоте "дошло, но не понял". Что именно она делает, и чем эта матрица отличается от cameraMatrix, полученной из calibrateCamera ? Для каких вычислений она "оптимальная" ? Я правильно понимаю, что при обычной cameraMatrix после undistort из-за искажений, пиксели, которые не возможно "выправить" будут чёрными, а благодаря newCameraMatrix они всё же будут исправлены, но с большими ошибками? И её не стоит применять, если нужна точность вычислений, к примеру для solvePnP. Как можно получить через известную cameraMatrix прямоугольник cv::Rect, который бы соответствовал области, в которой ошибки будут минимальны?
  12. Добрый день, уважаемые форумчане. Есть задача считать повторяющиеся движения в видеопотоке. Например человек приседает.. или отжимается.. ну или машет рукой "Пака!!". Я почему-то решил обучить для этого сеть(не исключено, что это ошибка и есть способы получше). Подскажите плз в какую сторону копать? То что я видел в гугле сводится к подсчету каких -либо попугаев на картинке(т.е. их наличие и количество). Как это обобщить на видео не понятно. Должно фиксироваться ведь движение целиком.. Есть вот идея обучить распознавать к примеру несколько положений и скармливать кадры сети и фиксировать обнаружение какого-либо положения - потом переходить к следующему, останется только задать правильную последловательность распознавания..Но чесно говоря.. это нужно разбить движение на фазы.. для каждой фазы нужна своя выборка и т.д. Чот смахивает на неоптимальность.. Может есть лучшие предложения?? Премного благодарен.
  13. Пытаюсь калибровать камеру на предмет дисторсии по вот этому мануалу https://docs.opencv.org/4.3.0/d4/d94/tutorial_camera_calibration.html Когда использовал шахматный эталон - всё было ок, пока он был целиком в кадре, но висло намертво, когда часть эталона оказывалась вне кадра, пытаюсь сделать с кругами, пишут вроде что алгоритм более устойчивый, но он просто не находит цель, если не уменьшать размер изображения (примерно до 1024*768). Шаблон генерил с помощью скриптов OpenCV, пытался и симметричный и асимметричный использовать. Можно ли что-то сделать, чтобы нормально находить эталон на большом кадре? Или надо сильно уменьшать изображение, находить цель, потом брать базовое изображение, умножать все найденные координаты на коэффициент, с которым уменьшали изображение и запускать findCornersSubPix? Асимметричный эталон использовал вот этот Код вот такой: cv::Size boardSize( 4, 11 ); cv::Mat image = cv::imdecode( cv::Mat( 1, data->size(), CV_8UC1, data->data() ), cv::IMREAD_COLOR ); std::vector< cv::Point2f > pointBuf; bool found; // int chessBoardFlags = cv::CALIB_CB_ADAPTIVE_THRESH | cv::CALIB_CB_NORMALIZE_IMAGE | cv::CALIB_CB_FAST_CHECK; qDebug()«"Looking for corners"; // found = findChessboardCorners( image, boardSize, pointBuf, chessBoardFlags); //found = findCirclesGrid( image, boardSize, pointBuf ); found = findCirclesGrid( image, boardSize, pointBuf, cv::CALIB_CB_ASYMMETRIC_GRID);
  14. Добрый день! Коллеги, подскажите пожалуйста при помощи каких codec можно уменьшить размер выходного видео файла? Задача получить минимальный размер при сохранении среднего качества картинки получаемой с Web камеры. Перепробовал различные комбинации кодеков/выходного формата: 'M', 'J', 'P', 'G' / .avi , 'M', 'P, '4', 'V' / .mp4 , 'D', 'I', 'V', 'X' / .avi , 'A', 'V', 'C', '1' / .avi . На данный момент 30 минут видео с 10 FPS весит > 1GB, в идеале хотелось бы добиться 200-300 мбайт. Вот код функции с помощью которого пишу видео файл с web камеры: int fcc = CV_FOURCC('M', 'J', 'P', 'G'); int fps = 25; string filelocation = "С:\\video.avi"; cv::Size frameSize(videoCapture.get(CV_CAP_PROP_FRAME_WIDTH), videoCapture.get(CV_CAP_PROP_FRAME_HEIGHT)); VideoWriter testwriter(filelocation, fcc, fps, cv::Size(640,480), true); while (true) { cv::Mat writefrm; //Get frame from webcam videoCapture >> writefrm; }
  15. Добрый день. В программе осуществляется поиск углов шахматной доски на фотографии. Для этого используется FindChessboardCorners в C#. По найденным углам строятся линии. Дело в том, что точки (когда вывожу их все на изображение, и когда только 4 угла), при определении "дрожат". Не знаю, с чем это связано. Пробовал разные флаги для этой функции, пробовал ставить на жесткую подставку - все равно. Есть ли какие-нибудь способы более точного определения с помощью готовых методов в OpenCV? Я пытался сделать следующим образом: Подсчитать медиану всех расстояний между точками вдоль каждой стороны, и применить ее для всех, но это работает только если камера не под наклоном. Файл с коротким видео, как это выглядит (я понимаю, что почти все тут это наблюдали при калибровке, но всё же). for compvision.mp4
  16. Добрый день! Подскажите пожалуйста, есть ли готовый алгоритм определения лица на видео(avi,mp4...) и сравнение его с базой, заранее заготовленных фото лиц? При обнаружении должно выводится оповещение об этом. Желательно на с++ и OpenCV. Заранее спасибо всем кто откликнется!
  17. С помощью функции cv::filter2D() нужно создать фильтр, который находит в изображении только прямые, наклоненные под углом 60 градусов. Примените его к достаточно интересной сцене и выведите результат car = cv2.imread("car.jpg") kernel = np.ones((3,3)) #cv2.filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]]) DST=cv2.filter2D(car, 14, kernel) cv2.imshow("DST",DST) cv2.waitKey(0) cv2.destroyAllWindows() Я немного не осилил documentation и до меня не дошло, как задать именно 60 градусов в данной функции. Буду рад, если кто-нибудь поможет с реализацией и объяснит,как работает якорь в данной функции.
  18. Добрый день! Подскажите пожалуйста как лучше реализовать обнаружение нескольких различных предметов на одном изображении? мы используем классификатор обнаружения лица "lbpcascade_frontalface.xml" и умеем обнаруживать лицо на изображении, и допустим у нас есть еще несколько различных классификаторов "собаки.xml", "кошки.xml", "сигареты.xml" и т.д. как можно реализовать обнаружение всех этих классификаторов на одном изображении одновременно ? какой алгоритм или подход лучше использовать? Программу реализуем на opencv 2.4.1 (C++) заранее большое спасибо всем кто откликнется.
  19. Создание dll, использующей openCV (C++)

    Здравствуйте. Пытался ли кто-нибудь создать dll из С++-кода, использующего OpenCV, и использовать её в C++ или C#? Я столкнулся со следующим: Преодолев ошибки, связанные с созданием динамических типов данных в тестовой dll, я подумал, что проблема уже решена. Теперь я могу использовать контейнеры в коде dll, но как только я создаю что-то из OpenCV (я пробовал создать матрицу cv::Mat, заполненную нулями), то функция LoadLibrary возвращает нулевой указатель. Работаю в x64 Debug, opencv_world411.dll так же клал в папку проекта. Если потребуется код и его результаты (которые я описал, в принципе, про нулевой указатель), могу потом запостить его.
  20. Поиск стекла на фотографии

    Добрый день! Я - практически новичок в OpenCV, хотя в математике разбираюсь неплохо. Столкнулся с задачей: нужно найти на фотографии стекло (фотография прилагается) и определить координаты четырех его углов. Фотография сделана при, скорее всего, неправильном освещении. Пробовал сделать это через поиск линий HoughLines, а так же через углы методом Харриса. Ни в первом, ни во втором случаях не удалось подобрать правильные параметры для поиска (пороговые значения, углы). Существуют ли типичные методы для подобных задач, или же для каждой задачи требуется свой подход? Не хотелось бы изобретать велосипед Спасибо.
  21. USB3Vision+Genicam+OpenCV

    Здравствуйте форумчане! Планирую применить в своей разработке промышленные видеокамеры (JAI GO или BASLER асе) с интерфейсами USB3Vision со стандартом передачи данных GenIcam (см.вложенный PDF файл). Для данных видеокамер производитель предусматривает собственные SDK, так в инструкции для SDK JAI написано: The JAI SDK consists of two APIs (Application Programming Interfaces): 1. Jai_Factory.dll: Windows DLL with “Plain” C-interface and C/C++ header file with all functions and parameter types defined. This makes it possible to use JAI SDK in almost any programming language available for the Windows platform. 2. Jai_FactoryDotNET.dll: Managed Windows DLL (.NET Framework 2.0). This DLL exposes the “Plain” function interface PLUS an “object-oriented” API. The object-oriented API encapsulates the “standard use” of the “plain” C-interface API. Далее там-же описаны примеры интеграции в проекты, написанные на Microsoft Visual Studio 2005 C/C++, С# и т.п. (см.вложенный PDF файл). В проекте своем планирую применить библиотеку OpenCV, так как имею опыт работы с ней и данная библиотека меня всем устраивает. До этого с данной библиотекой создавал приложения, работающие со стандартными вебкамерами по интерфейсу USB2.0. Там все понятно. В данном случае же прошу консультации есть ли возможность подружить видеокамеры, описанные мною выше с OpenCV (связка USB3Vision+Genicam+OpenCV). Есть ли успешно реализованные проекты на основе OpenCV и USB3Vision+GenIcam? Какие возможны подводные камни при получении изображения в OpenCV с таких камер. P.S. Не хотелось бы ошибиться и купить камеру, которую невозможно потом будет привязать к OpenCV, т.к.данные камеры не дешевые. Заранее благодарен за внимание к теме! JAI-SDK-Getting-Started-Guide_revK.pdf genicam_basler.pdf
  22. железо для openCV

    Коллеги, как подобрать железо для opencv, в интернете сотни статей для железа для machinelearning, а вот как собрать комп для машинного зрения. Вкратце, моя история, я отслеживаю перемещению муравей в аквариуме- научный интерес, но постоянно имею проблемы, потеря объекта, они сволочи дергаются порой, так же, я могу следить в один момент только за 4 - иначе комп виснет, но тут понятно, наверное, комп мощнее, ну а в плане отслеживания, можно ли как то сделать чтобы повысить возможности openCV, я как вижу, купить самую навороченную камеру и под нее подобрать видеокарту и проц мощнее, это верно? что можно сделать я использовал следующие функции 1.tracking - cv2.TrackerCSRT_create () и др, 2.hara cascade, 3.color tracking, 4.optical flow, 5. frame difference, может что забыл?
  23. Здравствуйте. Меня зовут Сергей. Я использую камеры HIWATCH DS-T101 подключенные к регистратору HIWATCH DS-104. У меня следующий вопрос: на данный момент я экспериментирую с компьютерным зрением . Программу пишу на python используя библиотеку opencv. В интернете я нашел много информации по получению видео потока с IP камер, к примеру: #receiving video from IP camera import cv2######################ip camers stream = cv2.VideoCapture('access protocol://login_cam:password_cam@IP') while True: r, f = stream.read() cv2.imshow('IP Camera stream',f) if cv2.waitKey(1) & 0xFF == ord('q'): break cv2.destroyAllWindows() Как мне сделать то же самое но с регистратором ?
  24. Добрый день! Необходимо отслеживать перемещения людей (идеально головы человека), при постоянно изменяющемся освещении. Цвет может быть красным, зеленым, синим, дневное освещение и может постоянно меняться. Можно ли стандартными методами и какими решить данную задачу?
  25. Задача у меня такая сравнить 2 картинки и сказать похожи ли они. Для начала я нахожу гистограммы каждого изображения и сравниваю их мерой сходства. Далее полученное расстояние и сравниваю с неким порогом, если оно меньше порога, то выполняю подсчет дескриптора AKAZE, отфильтровываю по расстоянию хемминга и фильтром RANSAC. далее проверяю что после фильтрации свсязей осталось больше 6, если больше то говорю что изображения похожи. как вам мой подход? он верен?
×