Я новичок в C ++ (а также в Cuda и OpenCV), поэтому прошу прощения за любые ошибки на моей стороне. У меня есть существующий код, который использует Cuda. Недавно он работал с .png (который был декодирован) в качестве входных данных, но теперь я использую камеру для генерации живых изображений. Эти изображения являются новым входом для кода. Вот оно:
using namespace cv;
INT height = 2160;
INT width = 3840;
Mat image(height, width, CV_8UC3);
size_t pitch;
uint8_t* image_gpu;
// capture image
VideoCapture camera(0);
camera.set(CAP_PROP_FRAME_WIDTH, width);
camera.set(CAP_PROP_FRAME_HEIGHT, height);
camera.read(image);
// here I checked if image is definitly still a CV_8UC3 Mat with the initial height and width; and it is
cudaMallocPitch(&image_gpu, &pitch, width * 4, height);
// here I use cv::Mat::data to get the pointer to the data of the image:
cudaMemcpy2D(image_gpu, pitch, image.data, width*4, width*4, height, cudaMemcpyHostToDevice);
Код компилируется, но я получаю «Исключение» в последней строке (cudaMemcpy2D) со следующим кодом ошибки: Исключение, выброшенное в 0x00007FFE838D6660 (nvcuda.dll) в realtime.exe : 0xC0000005: Место чтения нарушения доступа 0x000001113AE10000.
Google не дал мне ответа, и я не знаю, что делать дальше.
Спасибо за любые подсказки!