将OpenCV矩阵转换为C Array以与CUDA一起使用

时间:2017-12-05 15:48:23

标签: arrays opencv cuda

我使用此函数用某个C数组填充openCV:

float data[9] = { 1, 0.5,-51,0,1,50,0,0,1}; 
Mat myH = cv::Mat(3, 3, CV_32F, data);

但是我想知道是否有另一个函数对矩阵A执行相反的操作:

float myArray [Size_Of_A] = Mat A; 

我知道我可以通过循环来完成它,但如果没有这个功能,那么它是我的最后一个选择。 循环就像:

float myArray[size_of_A];
for (int row = 0; row < A.rows; row++)
    for (int col = 0; col < A.cols; col++)
        myArray[row * A.cols + col ] = A.at<float>(row, col);

我需要将图像发送到CUDA内核。

1 个答案:

答案 0 :(得分:1)

我从Miki评论中得到了这个答案,

float* myArray = myH.ptr<float>();

所以不需要复制主机端的数据,我们可以使用新指针'myArray'复制到设备。