i have test opencv-4.1.0 and opencv-3.4.6, but get same error, opencv build command:
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/opt/e3cloud \
-DOPENCV_GENERATE_PKGCONFIG=YES \
-DBUILD_PNG=ON \
-DBUILD_TIFF=ON \
-DBUILD_TBB=ON \
-DBUILD_JPEG=ON \
-DBUILD_JASPER=ON \
-DBUILD_ZLIB=ON \
-DBUILD_EXAMPLES=ON \
-DBUILD_opencv_java=OFF \
-DBUILD_opencv_nonfree=ON \
-DBUILD_opencv_python=OFF \
-DENABLE_PRECOMPILED_HEADERS=OFF \
-DWITH_OPENCL=ON \
-DWITH_OPENMP=ON \
-DWITH_FFMPEG=ON \
-DWITH_GSTREAMER=OFF \
-DWITH_GSTREAMER_0_10=OFF \
-DBUILD_PROTOBUF=OFF \
-DWITH_PROTOBUF=ON \
-DWITH_GTK=ON \
-DWITH_VTK=OFF \
-DWITH_TBB=ON \
-DWITH_1394=OFF \
-DWITH_OPENEXR=OFF \
-DWITH_CUDA=ON \
-DCUDA_ARCH_BIN=6.2 \
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
-DCPU_BASELINE=FP16 \
-DCUDA_ARCH_PTX="" \
-DINSTALL_C_EXAMPLES=ON \
-DINSTALL_TESTS=ON \
-DENABLE_FAST_MATH=ON \
-DCUDA_FAST_MATH=ON \
-DENABLE_NEON=ON \
-DWITH_CUBLAS=ON \
-DWITH_CUFFT=ON \
-DWITH_CUEIGEN=ON \
-DWITH_opencv_dnn=ON \
-DOPENCV_DNN_OPENCL=ON \
-DOPENCV_ENABLE_NONFREE=ON \
-DOPENCV_EXTRA_MODULES_PATH=/home/nv/compile/opencv-4.1.0/opencv_contrib-4.1.0/modules \
..
test code:
#include <opencv2/opencv.hpp>
#include <thread>
#include <iostream>
#include <mutex>
#include <opencv2/cudacodec.hpp>
#include <opencv2/cudabgsegm.hpp>
#include <opencv2/cudaobjdetect.hpp>
using namespace std;
std::mutex m;
void threadfunc(const char *filename)
{
cv::VideoCapture cap(filename);
cv::Mat mat;
cv::Ptr<cv::cuda::BackgroundSubtractorMOG2> mog = cv::cuda::createBackgroundSubtractorMOG2(0.0002, 16,false);
cv::cuda::GpuMat gpuMat;
cv::cuda::GpuMat gpuMsk;
cv::Mat matMsk;
while (true)
{
m.lock();
cap>>mat;
gpuMat.upload(mat);
mog->apply( gpuMat, gpuMsk );
gpuMat.download( matMsk );
cout << "Intial ThreadID : " << std::this_thread::get_id() << ":" << endl;
m.unlock();
}
};
error output:
nv@nv-desktop:~/test1$ ./my_mog2_test
terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(4.1.0) /home/nv/compile/opencv-4.1.0/opencv_contrib-4.1.0/modules/cudabgsegm/src/cuda/mog2.cu:122: error: (-217:Gpu API call) invalid device symbol in function 'loadConstants'
./run.sh: line 2: 8095 Aborted (core dumped) ./mybin /usr/src/tegra_multimedia_api/data/Video/sample_outdoor_car_1080p_10fps.h264 1
i test it on jetson tx2 and it works normal, but failed at jetson nano, can give some tips?
thanks