我试图从网络摄像头读取视频,并在CUDA上处理它。在此之前必须将帧转换为1D数组,但是当我使用Mat :: data时,图像似乎已损坏(我看到的只是灰色混乱)。 imShow与相同的Mat工作正常。
captureA >> A;
cvtColor(A, A, CV_BGR2GRAY);
init_texture(A.data);
lawTex(450, 375, texture);
imshow("A", texture);
有什么想法吗?
答案 0 :(得分:0)
由于cudaMemcpyToArray()
中的init_texture()
要求输入数据存储器是连续的,所以在调用之前应该确保这一点。
对于您的情况,它可以是这样的:
if (A.isContinuous()){
init_texture(A.data);
}
else{ // not continuous, transfer first
std::vector<uchar> data;
data.assign(A.datastart, A.dataend);
init_texture(&data[0]);
}