不是,因为使用OpenCV-OCL时OpenCV内部会去寻找OpenCL平台设备等创建buffer数据传输执行内部已经写好的kernel再返回,虽然kernel部分比OpenCV纯API快,但那些OpenCL的隐式初始化工作耗时太多,所以掩盖了。当我执行一张图片或者循环执行几次时(纯OpenCV只要19ms左右,而OpenCV-OCL需要400ms左右),都是纯OpenCV的API占优势;但当我循环2000次时,OpenCV-OCL(1000ms左右)就比纯OpenCV(2000ms左右)快了50%!因为这2000次都只用初始化一次。。。所以感觉OpenCV-OCL的优势不怎么大啊?不是每个项目都有这么多循环,也许某个项目中,只有几个OpenCV的API有自己的OpenCV-OCL形式,我为了加速,将这几个API改成相应的OpenCV-OCL形式,会很慢。。。因为照实验看来,只有当大幅度使用OpenCV-OCL时才有性能提升,否则适得其反。而一个项目代码中,即使都是OpenCV-API,但并不是每个API都有OCL版本,这样混着用其实性能反而降低的。所以感觉OpenCV-OCL并没有那么实用,只是人们自我安慰的幻想?
我使用的是OpenCV3.2,使用OpenCV-OCL版本的比单纯使用OpenCV的慢了很多!是不是3.x都不能使用OpenCL?!只能用OpenCV2.X?
[quote=引用 5 楼 wangyaninglm 的回复:] 只要把dll跟lib的目录配置正确可以直接用的吧,opencl非常好用,感觉opencv支持的不错 cuda他妈的就得重新编译了,还得附加其他一大堆乱起八糟的东西,编译一次好几个小时
[quote=引用 8 楼 wangyaninglm 的回复:] [quote=引用 7 楼 xmzzp 的回复:] [quote=引用 6 楼 wangyaninglm 的回复:] [quote=引用 5 楼 wangyaninglm 的回复:] 只要把dll跟lib的目录配置正确可以直接用的吧,opencl非常好用,感觉opencv支持的不错 cuda他妈的就得重新编译了,还得附加其他一大堆乱起八糟的东西,编译一次好几个小时
[quote=引用 7 楼 xmzzp 的回复:] [quote=引用 6 楼 wangyaninglm 的回复:] [quote=引用 5 楼 wangyaninglm 的回复:] 只要把dll跟lib的目录配置正确可以直接用的吧,opencl非常好用,感觉opencv支持的不错 cuda他妈的就得重新编译了,还得附加其他一大堆乱起八糟的东西,编译一次好几个小时
[quote=引用 6 楼 wangyaninglm 的回复:] [quote=引用 5 楼 wangyaninglm 的回复:] 只要把dll跟lib的目录配置正确可以直接用的吧,opencl非常好用,感觉opencv支持的不错 cuda他妈的就得重新编译了,还得附加其他一大堆乱起八糟的东西,编译一次好几个小时
只要把dll跟lib的目录配置正确可以直接用的吧,opencl非常好用,感觉opencv支持的不错 cuda他妈的就得重新编译了,还得附加其他一大堆乱起八糟的东西,编译一次好几个小时
好像要定义一些什么宏吧?
19,468
社区成员
50,698
社区内容
加载中
试试用AI创作助手写篇文章吧