Вызов API Gpu (неизвестная ошибка) в bindTexture
В настоящее время я пытаюсь внедрить демосайзинг изображений (дебайеринг) с помощью OpenCV3.1 с CUDA8.0 на плате Nvidia Jetson TX1 и страдаю от нерешенных ошибок.
Следующий код является проблемной частью.
cv::cuda::GpuMat debayeredImage_cuda;
PvImage* lImage_raw = lBuffer->GetImage();
lImage_raw->Alloc(lWidth, lHeight, PvPixelMono8);
unsigned char* img = lImage_raw->GetDataPointer();
cv::cuda::GpuMat rawImage_cuda(lHeight, lWidth, CV_8UC1, img, cv::Mat::AUTO_STEP);
//---------Following Line Occurs ERROR-----------//
cv::cuda::demosaicing(rawImage_cuda, debayeredImage_cuda,
cv::cuda::COLOR_BayerGB2RGB_MHT, 3);
Сообщение об ошибке: ошибка OpenCV: вызов API Gpu (неизвестная ошибка) в bindTexture, файл /media/ubuntu/payload/opencv/modules/core/include/opencv2/core/cuda/common.hpp, строка 102 /media/ubuntu/payload/opencv/modules/core/include/opencv2/core/cuda/common.hpp:102: ошибка: (-217) неизвестная ошибка в функции bindTexture
И это файл, запускающий ошибки common.hpp: 102
cudaSafeCall( cudaBindTexture2D(0, tex, img.ptr(), &desc, img.cols, img.rows, img.step) );
Я следовал руководству по установке OpenCV для Jetson TX1 http://docs.opencv.org/trunk/d6/d15/tutorial_building_tegra_cuda.html, чтобы создать OpenCV 3.1, сочетающий в себе готовый CUDA8.0.
И вот моя команда cmake.
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DBUILD_PNG=OFF \
-DBUILD_TIFF=OFF \
-DBUILD_TBB=OFF \
-DBUILD_JPEG=OFF \
-DBUILD_JASPER=OFF \
-DBUILD_ZLIB=OFF \
-DBUILD_EXAMPLES=ON \
-DBUILD_opencv_java=ON \
-DBUILD_opencv_python2=OFF \
-DBUILD_opencv_python3=OFF \
-DENABLE_PRECOMPILED_HEADERS=OFF \
-DWITH_OPENCL=OFF \
-DWITH_OPENMP=OFF \
-DWITH_FFMPEG=ON \
-DWITH_GSTREAMER=OFF \
-DWITH_GSTREAMER_0_10=OFF \
-DWITH_CUDA=ON \
-DWITH_GTK=ON \
-DWITH_VTK=OFF \
-DWITH_TBB=ON \
-DWITH_1394=OFF \
-DWITH_OPENEXR=OFF \
-DCUDA_GENERATION=Auto \
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-8.0 \
-DCUDA_ARCH_BIN=5.3 \
-DCUDA_ARCH_PTX="" \
-DINSTALL_C_EXAMPLES=ON \
-DINSTALL_TESTS=OFF \
-DOPENCV_TEST_DATA_PATH=../opencv_extra/testdata \
../../opencv
Я понижаю версию с OpenCV 3.3 до OpenCV 3.1, потому что та же ошибка произошла в 3.3, но все же она не исправлена в 3.1.
Я осторожно предлагаю следующие возможные сценарии.
- DCUDA_ARCH_BIN. Я много искал в Google, и многие из них говорили о DCUDA_ARCH_BIN, который в моем случае равен 5.3. Тем не менее, версия 5.3 подходит, как сообщает Nvidia на сайте, поэтому я думаю, что это не проблема.
- Неправильное использование функции cv::cuda::demosaicing(,,,) в моем коде. Я не уверен, правильно ли я использовал cv:: cuda:: GpuMat для хранения данных изображения.
Я очень мотивирован, чтобы проверить любые ваши комментарии в этой статье, поэтому, пожалуйста, дайте мне знать, если у вас есть какие-либо возможные решения.