在android上使用opencv的ocl模块遇到的问题(一)
2017-02-08 16:16
567 查看
运行系统:一个裁剪版的android系统
使用的核函数:pyrlk.cl
由于opencl的机制的问题,在第一次运行的时候会产生*.clb文件,我在产生lkSparse_C1_D5的kernel时出现错误,而之前的pyrDown_C1_D5等kernel都顺利完成。
报错信息:"
BUILD LOG: pyrlk: -D DOUBLE_SUPPORT
<source>:676:11: error: using invalid qualifier with sampler type
sampler_t sampleri = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP_TO_EDGE | CLK_FILTER_NEAREST;
^
error: Compiler frontend failed (error code 58)
OpenCV Error: Gpu API call (CL_BUILD_PROGRAM_FAILURE) in _cl_program* cv::ocl::ProgramFileCache::getOrBuildProgram(const cv::ocl::Context*, const cv::ocl::ProgramEntry*, const string&), file /home/mrqsun/opencv/opencv-2.4.13/modules/ocl/src/cl_programcache.cpp,
line 454
"
报错解析:一般出现CL_BUILD_PROGRAM_FAILURE这种错误,是clBuildProgram失败的意思,失败的原因一般是存在语法错误,然后根据BUILD LOG的信息,定位语法出错的地方,然后进行修改。
opencl相关的宏,在cl.h里面定义的,cl.h一般在系统路径include/CL下面。针对ocl模块,我们在打印一些状态值调试的时候,根据打印的宏的值,取cl.h里面找对应的状态,然后确定走哪一个分支。
根据错误信息定位,修改
sampler_t sampleri = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP_TO_EDGE | CLK_FILTER_NEAREST;
为
const sampler_t sampleri = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP_TO_EDGE | CLK_FILTER_NEAREST;
不再报错。
总结:ocl模块的opencl下面是写好的一些核函数,里面有得可能存在语法错误,根据报错与opencl的语法规则进行相应修改。
使用的核函数:pyrlk.cl
由于opencl的机制的问题,在第一次运行的时候会产生*.clb文件,我在产生lkSparse_C1_D5的kernel时出现错误,而之前的pyrDown_C1_D5等kernel都顺利完成。
报错信息:"
BUILD LOG: pyrlk: -D DOUBLE_SUPPORT
<source>:676:11: error: using invalid qualifier with sampler type
sampler_t sampleri = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP_TO_EDGE | CLK_FILTER_NEAREST;
^
error: Compiler frontend failed (error code 58)
OpenCV Error: Gpu API call (CL_BUILD_PROGRAM_FAILURE) in _cl_program* cv::ocl::ProgramFileCache::getOrBuildProgram(const cv::ocl::Context*, const cv::ocl::ProgramEntry*, const string&), file /home/mrqsun/opencv/opencv-2.4.13/modules/ocl/src/cl_programcache.cpp,
line 454
"
报错解析:一般出现CL_BUILD_PROGRAM_FAILURE这种错误,是clBuildProgram失败的意思,失败的原因一般是存在语法错误,然后根据BUILD LOG的信息,定位语法出错的地方,然后进行修改。
opencl相关的宏,在cl.h里面定义的,cl.h一般在系统路径include/CL下面。针对ocl模块,我们在打印一些状态值调试的时候,根据打印的宏的值,取cl.h里面找对应的状态,然后确定走哪一个分支。
根据错误信息定位,修改
sampler_t sampleri = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP_TO_EDGE | CLK_FILTER_NEAREST;
为
const sampler_t sampleri = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP_TO_EDGE | CLK_FILTER_NEAREST;
不再报错。
总结:ocl模块的opencl下面是写好的一些核函数,里面有得可能存在语法错误,根据报错与opencl的语法规则进行相应修改。
相关文章推荐
- Opencv中使用ocl模块遇到的问题
- android上使用opencv遇到的一点问题
- Android Studio-—使用OpenCV的配置方法和demo以及开发过程中遇到的问题解决
- Android开发时 adb shel l的使用可能遇到的问题
- 使用eclipse+git插件开发android项目时遇到的问题及解决
- 刚开始使用cocos2d-x时遇到的问题(android版)
- 解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
- android中使用Baidu Map遇到的问题之:移动Mapview上的放大缩小控件
- Android中使用HorizontalScrollView和TableLayout遇到的问题
- Android游戏开发中使用Libgdx引擎遇到的问题及解决办法汇总
- android使用javamail 发送邮件遇到的问题
- 关于android Listview 使用时遇到的几个问题
- Android使用commons-codec-1.6 遇到的问题
- Android SmackAPI使用中遇到的问题
- 关于android Listview 使用时遇到的几个问题
- 自己在使用Android Maps API 开发地图应用程序时遇到的问题,以及解决的办法
- 在使用ZxingDemo做二维码开中中遇到的Android设备谎言分辨率问题
- 【Richie Zhu】android开发时使用Android模拟器经常遇到连不上、连一次掉一次等诸多问题的解决方案
- android上使用 google map 会遇到的一些问题
- 今天使用VS2012遇到一个问题:"链接器工具错误 LNK2026 XXX模块对于 SAFESEH 映像是不安全的"