J'ai créé un objet de mémoire sur la mémoire partagée avec appel suivant OpenCL-Fonction:Sauvegardez les données de Mat (OpenCV) sur memoryarea situé par un pointeur
cl_mem buffer_img_GAUSS_TEST = clCreateBuffer(context, CL_MEM_ALLOC_HOST_PTR, sizeof(uchar) * size_cols * size_rows,NULL,&status);
Un appel de cette fonction me donne le pointeur :
uchar *src_ptr;
src_ptr = (uchar *)clEnqueueMapBuffer(cmdQueue, buffer_img_GAUSS_TEST, CL_TRUE, CL_MAP_READ, 0, sizeof(uchar) * size_cols* size_rows, 0, NULL, NULL, &status);
maintenant, je veux lire une image suivant appel de la fonction OpenCV:
Mat img= imread("scene.jpg", IMREAD_GRAYSCALE);
Est-il possible de "dire" que les données de l'image doivent être placées dans la zone de données pointée par src_ptr? La zone située par le buffer_img_GAUSS_TEST a exactement la taille nécessaire pour les données de modèle
En d'autres termes: Je veux remplacer cette partie du code, qui copys les données de l'image à l'adresse pointée par src_pointer.
memcpy (src_ptr, img.data, sizeof(uchar) * img.cols * img.rows);