Автор оригинала: Simmi Mourya.
Настоятельно рекомендуется пройти этот учебник один раз. Если вы мало знаете о файлах Mex, пожалуйста, обратитесь к этому учебнику один раз. Однако в этом нет необходимости. Вы сможете следовать всему этому учебнику, даже не зная многого о файлах mex. Но это покажется менее волшебным, если вы обратитесь к этой ссылке. 🙂
- Скачать Vlfeat .
- Внутри загруженной папки перейдите к vl_compile.m в папке toolbox.
- В vl_compile.m найдите этот фрагмент:
cmd = {['-I' toolboxDir], ... ['-I' vlDir], ... '-o', ... '-outdir', mexwDir, ... filePath } ;
Замените флаг-o флагом-g: [нет оптимизации, но вместо этого отладка], т. е.
cmd = {['-I' toolboxDir], ... ['-I' vlDir], ... '-g', ... '-outdir', mexwDir, ... filePath } ;
Скомпилируйте источник Vlfeat с помощью команды vl_compile. т. Е. В командном окне Matlab перейдите в папку, содержащую vl_compile.m, и запустите vl_compile.
Для компиляции всех исходных файлов C MEX требуется некоторое время. Тем временем вы найдете совершенно новую папку с именем mex в папке toolbox. Эта папка mex содержит все двоичные файлы mex, необходимые для использования интерфейса Vlfeat Matlab. Поскольку я использую платформу Windows x64, мне следует изучить папку с именем mexw64.
Примечание: Возможно, вы не сможете запускать команды vlfeat Matlab даже после компиляции. Вы можете столкнуться с некоторыми ошибками. Я составил список тех ошибок и их решений, которые сработали в моем случае.
Внутри mexw64 (выберите папку в соответствии с платформой, на которой вы работаете) вы найдете файлы pdb [База данных отладки программ] наряду с двоичными файлами mex. Это файлы, которые содержат отладочную информацию и, следовательно, используются Visual Studio позже при отладке. Примечание: Если вы не используете флаг-g, файлы pdb не формируются.
Теперь вы все готовы к отладке.
Запустите Visual Studio (VS) [Не завершайте сеанс Matlab]. В VS перейдите в раздел инструменты, выберите Прикрепить к процессу и выберите MATLAB из списка.
Откройте файл, который вы хотите отладить в VS. В моем случае это был vl_siftdescriptor.c. Поэтому я перешел в папку sift внутри папки toolbox и открыл дескриптор vl_sift.c
Установите точки останова в нужных местах.
В командном окне Matlab запустите дескриптор vl_sift с соответствующими аргументами. Вы перейдете к VS, когда первый отладчик достигнет первой точки останова.
Просто ради этого урока я вставляю команды exacts, которые я использовал для запуска дескриптора vl_sift в Matlab:
I1 = im2single(imread('lena.png')); [F,D]=vl_sift(I1); I_ = vl_imsmooth(I1, sqrt(F(3)^2 - 0.5^2)) ; [Ix, Iy] = vl_grad(I_) ; mod = sqrt(Ix.^2 + Iy.^2) ; ang = atan2(Iy,Ix) ; grd = shiftdim(cat(3,mod,ang),2) ; grd = single(grd) ; vl_siftdescriptor(grd, F);
Наслаждайтесь!
P. S: На всякий случай, если вы все еще не можете отлаживать в VS. В моем случае эта ссылка очень помогла!