我正在尝试使用OpenCV 3.1中的CUDA上传到GPU:
Mat testImg = Mat::zeros(Size(640,480), CV_8UC3);
GpuMat gpuImg = GpuMat(testImg);
在一个简单的程序中,这是有效的。但是我有一个庞大的项目,即使在主要功能的开头,也有两条线无法执行。我调试了它并进入gpu_mat.cu
直到第222行create(mat.size(), mat.type());
:
[从gpu_mat.cu第213行开始](此文件的完整代码:https://github.com/Itseez/opencv/blob/master/modules/core/src/cuda/gpu_mat.cu)
/////////////////////////////////////////////////////upload
void cv::cuda::GpuMat::upload(InputArray arr) {
Mat mat = arr.getMat();
CV_DbgAssert( !mat.empty() );
create(mat.size(), mat.type()); //programm goes until here; this function does not return; the program just hangs here
CV_CUDEV_SAFE_CALL( cudaMemcpy2D(data, step, mat.data, mat.step, cols * elemSize(), rows, cudaMemcpyHostToDevice) );
}
rows
mat
的值为640,cols
的值为480。有人有解决方案吗?我差点陷入绝望。