Jump to content
Compvision.ru

Search the Community

Showing results for tags 'opencv'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

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

Jabber


Skype


Расположение


Интересы

Found 88 results

  1. Здравствуйте. Допустим, откалибровал камеру при разрешении 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 ? Подставлять в неё уже отмаштабированную матрицу? Или оригинальную, а потом маштабировать обе?
  2. И снова здравствуйте. Поясните, пожалуйста, предназначение функции и где её использовать? getoptimalnewcameramatrix После прочтения документации по ссылке - как в анекдоте "дошло, но не понял". Что именно она делает, и чем эта матрица отличается от cameraMatrix, полученной из calibrateCamera ? Для каких вычислений она "оптимальная" ? Я правильно понимаю, что при обычной cameraMatrix после undistort из-за искажений, пиксели, которые не возможно "выправить" будут чёрными, а благодаря newCameraMatrix они всё же будут исправлены, но с большими ошибками? И её не стоит применять, если нужна точность вычислений, к примеру для solvePnP. Как можно получить через известную cameraMatrix прямоугольник cv::Rect, который бы соответствовал области, в которой ошибки будут минимальны?
  3. Приветствую! Нужно с точностью хотя бы в десятые градуса найти поворот объекта относительно оригинала на изображении. Что бы исключить влияние вешней среды все изображения для опытов создаю в 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 градусов и т.д.
  4. Добрый день, уважаемые форумчане. Есть задача считать повторяющиеся движения в видеопотоке. Например человек приседает.. или отжимается.. ну или машет рукой "Пака!!". Я почему-то решил обучить для этого сеть(не исключено, что это ошибка и есть способы получше). Подскажите плз в какую сторону копать? То что я видел в гугле сводится к подсчету каких -либо попугаев на картинке(т.е. их наличие и количество). Как это обобщить на видео не понятно. Должно фиксироваться ведь движение целиком.. Есть вот идея обучить распознавать к примеру несколько положений и скармливать кадры сети и фиксировать обнаружение какого-либо положения - потом переходить к следующему, останется только задать правильную последловательность распознавания..Но чесно говоря.. это нужно разбить движение на фазы.. для каждой фазы нужна своя выборка и т.д. Чот смахивает на неоптимальность.. Может есть лучшие предложения?? Премного благодарен.
  5. Пытаюсь калибровать камеру на предмет дисторсии по вот этому мануалу 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);
  6. Добрый день! Коллеги, подскажите пожалуйста при помощи каких 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; }
  7. Добрый день! Подскажите пожалуйста, есть ли готовый алгоритм определения лица на видео(avi,mp4...) и сравнение его с базой, заранее заготовленных фото лиц? При обнаружении должно выводится оповещение об этом. Желательно на с++ и OpenCV. Заранее спасибо всем кто откликнется!
  8. Добрый день. В программе осуществляется поиск углов шахматной доски на фотографии. Для этого используется FindChessboardCorners в C#. По найденным углам строятся линии. Дело в том, что точки (когда вывожу их все на изображение, и когда только 4 угла), при определении "дрожат". Не знаю, с чем это связано. Пробовал разные флаги для этой функции, пробовал ставить на жесткую подставку - все равно. Есть ли какие-нибудь способы более точного определения с помощью готовых методов в OpenCV? Я пытался сделать следующим образом: Подсчитать медиану всех расстояний между точками вдоль каждой стороны, и применить ее для всех, но это работает только если камера не под наклоном. Файл с коротким видео, как это выглядит (я понимаю, что почти все тут это наблюдали при калибровке, но всё же). for compvision.mp4
  9. С помощью функции 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 градусов в данной функции. Буду рад, если кто-нибудь поможет с реализацией и объяснит,как работает якорь в данной функции.
  10. Добрый день! Подскажите пожалуйста как лучше реализовать обнаружение нескольких различных предметов на одном изображении? мы используем классификатор обнаружения лица "lbpcascade_frontalface.xml" и умеем обнаруживать лицо на изображении, и допустим у нас есть еще несколько различных классификаторов "собаки.xml", "кошки.xml", "сигареты.xml" и т.д. как можно реализовать обнаружение всех этих классификаторов на одном изображении одновременно ? какой алгоритм или подход лучше использовать? Программу реализуем на opencv 2.4.1 (C++) заранее большое спасибо всем кто откликнется.
  11. Здравствуйте. Пытался ли кто-нибудь создать dll из С++-кода, использующего OpenCV, и использовать её в C++ или C#? Я столкнулся со следующим: Преодолев ошибки, связанные с созданием динамических типов данных в тестовой dll, я подумал, что проблема уже решена. Теперь я могу использовать контейнеры в коде dll, но как только я создаю что-то из OpenCV (я пробовал создать матрицу cv::Mat, заполненную нулями), то функция LoadLibrary возвращает нулевой указатель. Работаю в x64 Debug, opencv_world411.dll так же клал в папку проекта. Если потребуется код и его результаты (которые я описал, в принципе, про нулевой указатель), могу потом запостить его.
  12. Добрый день! Я - практически новичок в OpenCV, хотя в математике разбираюсь неплохо. Столкнулся с задачей: нужно найти на фотографии стекло (фотография прилагается) и определить координаты четырех его углов. Фотография сделана при, скорее всего, неправильном освещении. Пробовал сделать это через поиск линий HoughLines, а так же через углы методом Харриса. Ни в первом, ни во втором случаях не удалось подобрать правильные параметры для поиска (пороговые значения, углы). Существуют ли типичные методы для подобных задач, или же для каждой задачи требуется свой подход? Не хотелось бы изобретать велосипед Спасибо.
  13. железо для openCV

    Коллеги, как подобрать железо для opencv, в интернете сотни статей для железа для machinelearning, а вот как собрать комп для машинного зрения. Вкратце, моя история, я отслеживаю перемещению муравей в аквариуме- научный интерес, но постоянно имею проблемы, потеря объекта, они сволочи дергаются порой, так же, я могу следить в один момент только за 4 - иначе комп виснет, но тут понятно, наверное, комп мощнее, ну а в плане отслеживания, можно ли как то сделать чтобы повысить возможности openCV, я как вижу, купить самую навороченную камеру и под нее подобрать видеокарту и проц мощнее, это верно? что можно сделать я использовал следующие функции 1.tracking - cv2.TrackerCSRT_create () и др, 2.hara cascade, 3.color tracking, 4.optical flow, 5. frame difference, может что забыл?
  14. Здравствуйте. Меня зовут Сергей. Я использую камеры 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() Как мне сделать то же самое но с регистратором ?
  15. Задача у меня такая сравнить 2 картинки и сказать похожи ли они. Для начала я нахожу гистограммы каждого изображения и сравниваю их мерой сходства. Далее полученное расстояние и сравниваю с неким порогом, если оно меньше порога, то выполняю подсчет дескриптора AKAZE, отфильтровываю по расстоянию хемминга и фильтром RANSAC. далее проверяю что после фильтрации свсязей осталось больше 6, если больше то говорю что изображения похожи. как вам мой подход? он верен?
  16. Добрый день! Необходимо отслеживать перемещения людей (идеально головы человека), при постоянно изменяющемся освещении. Цвет может быть красным, зеленым, синим, дневное освещение и может постоянно меняться. Можно ли стандартными методами и какими решить данную задачу?
  17. Доброе время суток! Необходимо распознать автомобильный номер на изображении, для увеличения точности решил трансформировать номер так, будто камера смотрит прямо на него. Для выполнения задачи решил найти верхнюю и левую линии, и из них рассчитать углы, но столкнулся с проблемой. Метод CvInv oke.HoughLines находит большое количество линий, но даже при увеличении порога правильная линия попадается редко. Написал аналог данного метода C# но для поиска только самой явной линии, однако он страдает той же проблемой. Разница где то в 15 градусов, если "докинуть" их вручную выходит почти правильно. За основу алгоритма был взят CvInv oke.HoughLines, сам метод: public static unsafe LineSegment2D FindBestLineD(Mat input, double minTheta, double maxTheta, double theta, int rho) { int width = input.Width; int height = input.Height; int max_rho = (int)Math.Sqrt(width * width + height * height); int min_rho = -max_rho; int thetaCount = (int)((maxTheta - minTheta) / theta); int rhoCount = (int)(((max_rho - min_rho) + 1) / rho); double[] thetaArr = new double[thetaCount]; double tmp = minTheta; double[] sinTheta = new double[thetaCount]; double[] cosTheta = new double[thetaCount]; for (int i = 0; i < thetaCount; i++) { thetaArr = tmp; sinTheta = Math.Sin(tmp); cosTheta = Math.Cos(tmp); tmp += theta; } int[,] accum = new int[rhoCount, thetaCount]; Bitmap bitmap = input.Bitmap; BitmapData bitmapData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, bitmap.PixelFormat); byte* Pixels = (byte*)bitmapData.Scan0.ToPointer(); int stride = bitmapData.Stride; int shift = 0; for (int h = 0; h < height; h++) { shift = stride * h; for (int w = 0; w < width; w++) { if (Pixels[shift + w] != 0) { for (int i = 0; i < thetaCount; i++) { int r = (int)(h * sinTheta + w * cosTheta); r += rhoCount / 2; accum[r, i]++; } } } } bitmap.UnlockBits(bitmapData); int MaxValue = 0; int BestRho = 0; double BestTheta = 0; for (int t = 0; t < thetaArr.Length; t++) { for (int r = 0; r < rhoCount; r++) { if (accum[r, t] > MaxValue) { MaxValue = accum[r, t]; BestTheta = thetaArr[t]; BestRho = r - rhoCount / 2; } } } //BestTheta += theta * 15; var pt1 = new Point(); var pt2 = new Point(); var a = Math.Cos(BestTheta); var b = Math.Sin(BestTheta); var x0 = a * BestRho; var y0 = b * BestRho; pt1.X = (int)Math.Round(x0 + input.Width * (-b)); pt1.Y = (int)Math.Round(y0 + input.Height * (a)); pt2.X = (int)Math.Round(x0 - input.Width * (-b)); pt2.Y = (int)Math.Round(y0 - input.Height * (a)); return new LineSegment2D(pt1, pt2); } Если бы проблема была только с ним, продолжал бы сам искать ошибку, но предложенный в библиотеке вариант тоже "недокручивает" градусы. Есть ли у кого предположение с чем может быть связан данный феномен, может ли быть тому причиной малый размер изображения (ширина до 200 px )? Или может существуют более удобные решения данной проблемы, при условии что быстродействие является критичным?
  18. Всем привет. Передо мной стоит задача распознать небо на фото. Использую Visual Studio и OpenCV. Из результата хорошо видно что область неба более темная, но что делать дальше? Результатом может быть просто выведение части изображения с небом в отдельный файл. Возможно я спрашиваю что то совсем простое так как новичок в opencv. И за это прошу прощения. Заранее спасибо. int main(int argc, char** argv) { Mat src, src_gray; Mat grad; int scale = 1; int delta = 0; int ddepth = CV_64F; //int c; /// Load an image src = imread("1.jpg");; GaussianBlur(src, src, Size(3, 3), 0, 0, BORDER_DEFAULT); /// Convert it to gray cvtColor(src, src_gray, CV_BGR2GRAY); /// Generate grad_x and grad_y Mat gradient_image; Mat grad_x, grad_y; Mat abs_grad_x, abs_grad_y; /// Gradient X //Scharr( src_gray, grad_x, ddepth, 1, 0, scale, delta, BORDER_DEFAULT ); Sobel(src_gray, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_REPLICATE); convertScaleAbs(grad_x, abs_grad_x); /// Gradient Y //Scharr( src_gray, grad_y, ddepth, 0, 1, scale, delta, BORDER_DEFAULT ); Sobel(src_gray, grad_y, ddepth, 0, 1, 3, scale, delta, BORDER_REPLICATE); convertScaleAbs(grad_y, abs_grad_y); pow(abs_grad_x, 2, abs_grad_x); pow(abs_grad_y, 2, abs_grad_y); add(abs_grad_x, abs_grad_y, grad); gradient_image = grad; double ret, thresh = threshold(src_gray, src_gray,50, 255, THRESH_BINARY); imshow("gray", ret); imshow("sobel", src_gray); //imshow("sobel", grad); //imwrite("image01_res2.jpg", grad); //imshow("cobel1", abs_grad_y); //imshow("cobel2", abs_grad_x); imshow("orig", src); waitKey(0); return 0; }
  19. Коллеги, суть проблемы: не удается загрузить мной созданную модель tensorFlow в opencv.dnn методом cv2.dnn.readNetFromTensorflow(weights,config) выдается ошибка распарсивания графа вида Error parsing text-format opencv_tensorflow.GraphDef: 4059:5: Unknown enumeration value of "DT_RESOURCE" for field "type". гугление приводит к рецептам вроде заморозьте граф, преобразуйте файл *.pbtxt с помощью файлов, входящих в opencv, конфиг для сети при этом скачайте по ссылке, везде рекомендации, примерно как тут: https://github.com/opencv/opencv/wiki/TensorFlow-Object-Detection-API вопрос: но ведь это-же для конкретной заранее спроектированной сети - mobilenet, rcnn, yolo и других известных, я правильно понимаю или нет? и если да, то, что делать, если моя структура самописная? это не lenet, не guglonet, не yolo, это моя собственная сетка. мне что, не удастся ее в dnn прочитать? Спасибо.
  20. OpenCV survey 2018

    Привет! Команда OpenCV приглашает вас принять участие в опросе: https://opencv.org/survey-2018.html (powered by Google Docs). Спасибо!
  21. Для системы управления складскими роботами необходимо определять погрешности монтажников при варке стеллажей. С этой целью для каждой ячейки делается фото, и сейчас живой человечек рисует в каждом таком фото желтый крестик (см. фото с красным кружочком и зеленым контуром). Пока ячеек было 2-3000, было терпимо. Сейчас планируется робосклад на 100000 ячеек, и решили делать распознавание образов (нужно определить край уголка). Образы могут быть сами разные, в т.ч. с перегороженным куском уголка (см. другие фото). Хотим использовать библиотеку OpenCV (emgucv для C#). Вопрос - в какую сторону копать? - анализ изображений (выбор отличительных признаков, морфология, поиск контуров, гистограммы) - или обнаружение объектов, в частности лиц - или еще что? Сгодятся ли для этой задачи контуры? Или, из-за игры теней и частичного перекрытия самим роботом, контуры использовать не получится? Еще чисто теоретически задача решаема для дневного освещения? Или только ночью (см. фото в аттаче)?
  22. А кто мне подскажет, как найти контуры прямоугольников в такой сложной ситуации? Выделил красным желаемый результат разделения. Вероятно, можно нейросетями (не пробовал, но уверен, что получится), но хотелось бы классическими методами OpenCV.
  23. Доброго времени суток. Интересует такая тема, как нахождение недвижимого предмета на переднем плане(т.е изначально он отсутствовал), перепробована куча вариантов и алгоритмов, но ничего стабильного так и не найдено, возможно кто то что то реализовывал похожее?
  24. Здравствуйте, пытался обучить SVM hog дескрипторами. Но в момент установки svm модели , выбрасывает исключение Находил похожие вопросы на answer opencv (Вопрос), от туда выяснил, как добавлять rho и автор советовал перейти на float массив попытался, но ситуация не изменилась Код обучения (свой картинки, 28*28) (Ошибок не возникает, файл создается ) HOGDescriptor hog = new HOGDescriptor(new Size(28,28),new Size(8,8),new Size(4,4),new Size(4,4),9); Mat trainingLabels = new Mat(); MatOfFloat temp = new MatOfFloat(); File negativeDir = new File("/home/kurenchuksergey/HogSignTrainingData/negative"); File positiveDir = new File("/home/kurenchuksergey/HogSignTrainingData/positive"); int i = -1; float[][] hogdescriptor = new float[13992][]; //13992 - image count for(File file:negativeDir.listFiles()){ Mat con = Imgcodecs.imread(file.getAbsolutePath(),Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE); hog.compute(con, temp); trainingLabels.push_back(Mat.zeros(new Size(1,1),CvType.CV_32S)); } for(File file:negativeDir.listFiles()){ Mat con = Imgcodecs.imread(file.getAbsolutePath(),Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE); hog.compute(con, temp); hogdescriptor[++i] = temp.toArray(); trainingLabels.push_back(Mat.ones(new Size(1,1),CvType.CV_32S)); } Mat Labels = new Mat(); trainingLabels.copyTo(Labels); Labels.convertTo(Labels,CvType.CV_32S); Mat mat = new Mat(hogdescriptor.length,hogdescriptor[0].length,CvType.CV_32FC1); for(int j = 0;j<hogdescriptor.length;j++) mat.put(i,0,hogdescriptor[i]); TrainData trainDataHog = TrainData.create(mat,Ml.ROW_SAMPLE,Labels); SVM svm = SVM.create(); svm.setType(SVM.C_SVC); svm.setKernel(SVM.RBF); svm.setDegree(0.1); // 1.4 bug fix: old 1.4 ver gamma is 1 svm.setGamma(0.1); svm.setCoef0(0.1); svm.setC(1); svm.setNu(0.1); svm.setP(0.1); svm.setTermCriteria(new TermCriteria(1, 20000, 0.0001)); svm.train(trainDataHog.getSamples(),Ml.ROW_SAMPLE,trainDataHog.getResponses()); svm.save("SVMHog"); Далее пытаюсь воспользоваться моделью (Test.java) SVM svm1 = SVM.load("SVMHog"); HOGDescriptor hog = new HOGDescriptor(new Size(28,28),new Size(8,8),new Size(4,4),new Size(4,4),9); Double rho = svm1.getDecisionFunction(0,new Mat(),new Mat()); int size = (int)(svm1.getSupportVectors().total() + 1) * svm1.getSupportVectors().channels(); float[] temp = new float[size]; svm1.getSupportVectors().get(0, 0, temp); temp[temp.length - 1] = (float)-rho; MatOfFloat vector = new MatOfFloat(temp); hog.setSVMDetector(vector); И получаю исключение (47 - строка - hog.setSVMDetector(vector); ) OpenCV Error: Assertion failed (checkDetectorSize()) in setSVMDetector, file /home/kurenchuksergey/opencv/modules/objdetect/src/hog.cpp, line 117 Exception in thread "main" CvException [org.opencv.core.CvException: cv::Exception: /home/kurenchuksergey/opencv/modules/objdetect/src/hog.cpp:117: error: (-215) checkDetectorSize() in function setSVMDetector ] at org.opencv.objdetect.HOGDescriptor.setSVMDetector_0(Native Method) at org.opencv.objdetect.HOGDescriptor.setSVMDetector(HOGDescriptor.java:306) at com.company.Test.main(Test.java:47)
  25. Добрый день, есть фотография шахматной доски расположенной под определенным углом, я нашел ключевые точки, скажите как найти нормаль к этой шахматной доске?
×