2013-10-09 3 views
0

Я установил opencv и Cuda.I сделал код opencv, и теперь я хочу попытаться запустить его быстрее с помощью CUDA. Проблема в том, что модуль opencv GPU не удовлетворяет меня. Как я могу сделать код CUDA для включения и использования библиотек и функций opencv точно так же, как мои .cpp-файлы? Я включаю необходимые .h-файлы (cv.h highgui.h), которые я переместил в папку «include» CUDA в моей CUDA код, но когда я пытаюсь скомпилировать его с помощью NVCC он говорит Неопределенные символы для архитектуры i386:Как я могу использовать opencv в моем коде cuda?

«_cvLoadImage», ссылки из: _MAIN в tmpxft_000177b6_00000000-14_cuda.o LD: символ (ы) не найдено для архитектуры i386 collect2: ld возвращено 1 статус выхода

, что означает, что он не понимает функции, поэтому библиотеки не включены правильно, насколько я могу видеть. Как я могу заставить его работать?

ответ

1

Насколько я знаю, вы не можете просто включать функции OpenCV direclty в код CUDA. CUDA имеет собственный способ программирования и код, сделанный для CPU, не может работать непосредственно на GPU.

Я бы предложил вам посмотреть на documentation, чтобы понять, как работает CUDA.

Если gpu-сборка OpenCV не удовлетворяет требованиям, возможно, вы должны сделать свою собственную реализацию этих функций.

ИЛИ

вы просто хотите использовать OpenCV на CPU, а также использовать CUDA для некоторых других вычислений?

В этом случае, я думаю, вам нужно создать файл cpp, который обертывает ваши функции CUDA. Вы можете использовать свои завернутые функции, как обычно, в коде C или C++.

1

Я думаю, что «веб-семинары« Начало работы с GPU-ускоренным компьютерным зрением с использованием OpenCV и CUDA »должны помочь. Вы можете найти их здесь: link

+1

Ваша ссылка мертва – LandonZeKepitelOfGreytBritn

+0

Спасибо, исправить ссылку. –

0

Лучше не пытаться смешивать заголовки opencv с nvcc-компилятором, это плохая практика.

OpenCV построен в библиотеке, которая была построена с использованием CMake (обычно в окнах под Visual Studio),

Когда вы включаете заголовок OpenCV в NVCC компилятором, вы должны включать в себя все «подарки» вы получаете от OpenCV, например: внешняя dll, заголовки и функция extern, ожидаемые в opencv-коде.

То, что я нахожу, является наиболее подходящим решением в вашем случае, заключалось бы в написании кода, который компилируется в VS, см. Код CUDA и CUDA Opencv назад и вперед (вы всегда можете использовать примитивы и внешние функции).

+0

Прошел год с тех пор, как вы отправили этот комментарий, и ваш комментарий к мне - кажется, единственный, который действительно имеет значение. Не могли бы вы показать, что вы подразумеваете под «ссылкой на код CUDA и CUDA Opencv взад и вперед»? – LandonZeKepitelOfGreytBritn

Смежные вопросы