I diese Funktion OpenCV mit einer bestimmten C-Array zu füllen verwendet:Convert OpenCV Matrix C Array mit CUDA verwendet werden
float data[9] = { 1, 0.5,-51,0,1,50,0,0,1};
Mat myH = cv::Mat(3, 3, CV_32F, data);
aber ich fragen, ob es eine andere Funktion ist, die das Gegenteil, wie dies für Matrix tut A:
float myArray [Size_Of_A] = Mat A;
ich weiß, dass ich es mit einer Schleife tun, aber es ist meine letzte Option, wenn es keine Funktion, es zu tun ist. Die Schleife wäre wie:
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);
ich brauche ein Bild zu CUDA Kernel zu senden.
'float * myArray = meinH.ptr ();' – Miki
so kann ich einfach den neuen Zeiger für den Kernel verwenden, keine Notwendigkeit, irgendetwas zu kopieren, nicht wahr? –
Daten sollten auf das Gerät kopiert werden, oder? Sie können das 'float *' auf die Daten innerhalb der Matrix auf diese Weise bekommen (keine Kopie), dann müssen Sie die Daten auf das Gerät kopieren (kopieren) – Miki