2016-01-18 3 views
0

У меня есть небольшой фрагмент кода, который пытается преобразовать Mat в GpuMat и наоборот. Когда я пытаюсь загрузить Mat в GpuMat с функцией «загрузить», он прерывается. Если я сделаю следующий шаг в отладке, размер GpuMat будет написан, как и Mat, но он не загрузит данные пикселя. Вот код:CUDA и OpenCV. Конверсионная форма Mat to GpuMat не работает

Mat initFrame; 
Mat initconv; 
Mat threshold; 
imageCircle.copyTo(initFrame); 
cvtColor(initFrame,initconv,CV_BGR2HSV); 

gpu::GpuMat myFrame; 
gpu::GpuMat myFrameLab; 

myFrame.upload(initconv); 

myFrame.download(threshold); 
//gpu::cvtColor(myFrame,myFrameLab,CV_BGR2YCrCb); 
imshow("INPUT",threshold); 

UPDATE

Я читал, что мне нужно будет OpenCV построен с поддержкой GPU. Здесь я не знаю, что делать. Я где-то видел, что в каталогах OpenCV существует /gpu/built/... У меня есть 2.4.9 и 3.1 версии, но я не нашел в каталоге OpenCV /gpu/build/...

+0

Пожалуйста, определить, что вы подразумеваете под «он ломает». Как «это ломается»? –

+0

cv :: Исключение в ячейке памяти 0x001eaac4. У меня нарушение доступа к памяти. Я подтвердил, что у меня есть opencv, построенный с поддержкой GPU, и, к сожалению, он прав. Мне нужно получить opencv, построенный с поддержкой GPU или что? Здесь я не понимаю. – Eddie

+0

Пожалуйста, отредактируйте свой вопрос с этой информацией, а не разместите его в комментариях. –

ответ

0

Он начинает быть старым пост, но все же я хотел бы помочь:

Во-первых, проверить, если Cuda установлен и поддерживается, вы должны вызвать функцию

cuda::getCudaEnabledDeviceCount(); 

Если установлен и поддерживается Cuda ,, то он должен вернуть что-то отличное от 0.
Если вы используете Visual Studio 2015, как я, обычно вы должны знать, что Cuda поддерживает только Visual Studio 2013 и Visual Studio 2015 Update 1
В моем исследовании об использовании Cuda, я последовал за этот учебник:
http://robbinmarcus.blogspot.fr/2016/02/cuda-in-visual-studio-2015.html
Позвольте мне знать, если вам нужна помощь

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