iMx6プラットフォームでバイエルからrgbへの変換を改善するためにOpenCLを使用しようとしています。私は変換のためにこのthe OpenCL Shaderを使用しています。私は、OpenCLのバージョンがOpenCVのcvtColor bayerからrgbへの変換(forループを使用)よりも速いことを期待しています。しかし、OpenCLのバージョンは、OpenCVのCPUベースの変換よりもはるかに遅いことが判明しました。OpenCL bayerからrgbへCPUのバージョンより遅い
OpenCVの:1280 * 960の画像 OpenCLののための28.3 FPS:1280 * 960の画像
size_t global[] = {1280, 960};
Mat bayer = Mat(960, 1280, CV_8UC1);
Mat rgb_image = Mat(960, 1280, CV_8UC3);
cl_input = clCreateBuffer(context, CL_MEM_READ_ONLY | CL_MEM_USE_HOST_PTR, width * height, bayer.data , &ret);
if(ret != CL_SUCCESS){
cout << "OpenCL Buffer Allocation Error\n" ;
exit(0);
}
cl_output = clCreateBuffer(context, CL_MEM_WRITE_ONLY | CL_MEM_USE_HOST_PTR, width * height * 3, rgb_image.data, &ret);
if(ret != CL_SUCCESS){
cout << "OpenCL OP Buffer Error\n" ;
exit(0);
}
while(true){
capture_image(bayer);
ret = clEnqueueNDRangeKernel(cq, kernel, 2, NULL, global, NULL, 0, NULL, NULL);
if(ret != CL_SUCCESS){
cout << ret << " OpenCL kernel exec Error\n" ;
exit(0);
}
ret = clEnqueueReadBuffer(cq, cl_output, CL_TRUE, 0, width * height * 3, rgb_image.data, 0, NULL, NULL);
if(ret != CL_SUCCESS){
cout << "OpenCL OP Buffer read Error\n" ;
exit(0);
}
}
のための7.15 fpsのは、私が賢明な構成で行方不明です何がありますか?私のOpenCLに新しいですし、私は次のようにどのようにloop.Theプラットフォーム情報内のOpenCLカーネルを呼び出すことを確認していない:
- プラットフォーム名:ビバンテのOpenCLプラットフォーム
- プラットフォームプロフィール:EMBEDDED_PROFILE
- プラットフォームのバージョン:OpenCLの1.1
プラットフォームベンダー:ビバンテ社
デバイス名:ビバンテのOpenCLデバイス
- デバイスプロファイル:EMBEDDED_PROFILE
- デバイスバージョン:OpenCLの1.1
- デバイスベンダー:ビバンテ社
- デバイスの最大作業項目の寸法:3-D
- デバイスの最大ワークグループサイズ:1024
PS :OpenCVでOpenCLサポートを使用することができません.i.mx6はOpenCLでOpenCLサポートに必要なフルプロファイルではないため、