OpenCV: заменить ilLoadImage на cv :: imread

я использую hessgpu для эффективного вычисления аффинно-гессианских SIFT дескрипторов с использованием графических процессоров.

В этом проекте дьявол используется для чтения изображений: если SiftGPU::RunSIFT(const char *imgpath) называется (реализовано Вот), затем ilLoadImage используется в GLTexImage.cpp для чтения изображений (как изображения RGB).

Тем не менее, в моем проекте я использую cv::imread читать изображения. Проект предусматривает SiftGPU::RunSIFT(int width, int height, const void * data, unsigned int gl_format, unsigned int gl_type) вычислять дескрипторы из данных, предоставленных непосредственно от пользователя.

Итак, я попробовал:

cv::Mat img = cv::imread("image.jpg", cv::IMREAD_GRAYSCALE);
sift.RunSIFT(img.cols, img.rows, img.data, GL_LUMINANCE, GL_UNSIGNED_BYTE);

Но это дает чуть меньше ключевых точек, чем sift.RunSIFT("image.jpg");, Я пытался использовать:

cv::Mat img = cv::imread("image.jpg");
sift.RunSIFT(img.cols, img.rows, img.data, GL_RGB, GL_UNSIGNED_BYTE);

Но это дает 0 ключевых точек, поэтому происходит нечто очень неправильное. Я думаю:

  1. iLoadImage использует RGB-изображение, пока единственный рабочий метод, который я нашел до сих пор, использует cv::imread работает только с изображениями в оттенках серого.
  2. Возможно, что для чтения изображений дьявол использует другой процесс, нежели OpenCV, особенно для изображений RGB (поскольку при использовании второго подхода было получено 0 ключевых точек).

Как я могу сделать эквивалент ilLoadimage с помощью cv::imread?

0

Решение

Кажется, что-то не так с типами, попробуйте это:

Mat img = imread("image.jpg");
sift.RunSIFT(img.cols, img.rows, img.data, GL_BGR, GL_3_BYTES);

Или этот

cv::Mat img = cv::imread("image.jpg", cv::IMREAD_GRAYSCALE);
sift.RunSIFT(img.cols, img.rows, img.data, GL_RED, GL_UNSIGNED_BYTE);
0

Другие решения

Изменение runSift линия к:

sift.RunSIFT(img.cols, img.rows, img.data, GL_BGR, GL_UNSIGNED_BYTE);

Решил проблему и выдал точное количество дескрипторов.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector