opencv cuda failed (createBackgroundSubtractorMOG2)

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

6.2 is for TX2. For Nano (or TX1) you would use 5.3 instead. Have a look to this script.

mmapi has a sample with reading to cuda from camera that works. It uses v4l2 though.

hi, Honey_Patouceul.

thank you very much, i change it to 5.3, and all works well.

please close the topic.