OpenCV - Mat.data在VideoCapture之后损坏了

时间:2015-04-12 01:16:24

标签: opencv webcam mat

我试图从网络摄像头读取视频,并在CUDA上处理它。在此之前必须将帧转换为1D数组,但是当我使用Mat :: data时,图像似乎已损坏(我看到的只是灰色混乱)。 imShow与相同的Mat工作正常。

    captureA >> A;

    cvtColor(A, A, CV_BGR2GRAY);

    init_texture(A.data);
    lawTex(450, 375, texture);

    imshow("A", texture);

有什么想法吗?

1 个答案:

答案 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]);
}