首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV 3.0错误包括ocl.hpp

OpenCV 3.0错误包括ocl.hpp
EN

Stack Overflow用户
提问于 2015-12-22 18:30:46
回答 1查看 3.2K关注 0票数 1

我在ubuntu14.04中使用opencv 3.0.0。我安装了AMD催化剂视频驱动程序来使用OpenCV和OpenCL。

/etc/OpenCL/供应商有"amdocl32.icd amdocl64“和"libamdocl32.so”和"libamdocl64.so“。

在opencv cmake文件中,OpenCV显示为:

代码语言:javascript
复制
--   OpenCV modules:
--     To be built:                 hal core flann imgproc ml photo video imgcodecs shape videoio highgui objdetect superres ts features2d calib3d stitching videostab
--     Disabled:                    world
--     Disabled by dependency:      -
--     Unavailable:                 cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev java python2 python3 viz
--   OpenCL:
--     Version:                     dynamic
--     Include path:                /home/eduardo/Install-OpenCV/Ubuntu/OpenCV/opencv-3.0.0/3rdparty/include/opencl/1.2
--     Use AMDFFT:                  NO
--     Use AMDBLAS:                 NO
--     Use OpenCL:                  YES

当我在我的projet中包含ocl.hpp文件时(#include )。编译器返回他的消息:

代码语言:javascript
复制
In file included from main.cpp:11:0:
/usr/include/opencv2/ocl/ocl.hpp: In member function ‘cv::ocl::Hamming::ResultType cv::ocl::Hamming::operator()(const unsigned char*, const unsigned char*, int) const’:
/usr/include/opencv2/ocl/ocl.hpp:1170:46: error: ‘normHamming’ was not declared in this scope
                 return normHamming(a, b, size);
                                          ^
/usr/include/opencv2/ocl/ocl.hpp:1170:46: note: suggested alternative:
In file included from /usr/local/include/opencv2/core/base.hpp:56:0,
                 from /usr/local/include/opencv2/core.hpp:54,
                 from /usr/local/include/opencv2/core/core.hpp:48,
                 from /usr/include/opencv2/ocl/ocl.hpp:50,
                 from main.cpp:11:
/usr/local/include/opencv2/hal.hpp:70:5: note:   ‘cv::hal::normHamming’
 int normHamming(const uchar* a, const uchar* b, int n, int cellSize);
     ^
In file included from main.cpp:11:0:
/usr/include/opencv2/ocl/ocl.hpp: At global scope:
/usr/include/opencv2/ocl/ocl.hpp:1932:9: error: expected class-name before ‘{’ token
         {
         ^
/usr/include/opencv2/ocl/ocl.hpp:1950:9: error: expected class-name before ‘{’ token
         {
         ^
/usr/include/opencv2/ocl/ocl.hpp:1956:23: error: ‘CvSVMParams’ has not been declared
                       CvSVMParams params=CvSVMParams());
                       ^
/usr/include/opencv2/ocl/ocl.hpp:1956:54: error: ‘CvSVMParams’ was not declared in this scope
                       CvSVMParams params=CvSVMParams());
                                                      ^
make: *** [main.o] Error 1`

我需要在GPU上测试腐蚀和膨胀滤光片。

有人知道为什么会发生这种事吗?

EN

回答 1

Stack Overflow用户

发布于 2015-12-22 18:58:30

您不应该将ocl.hpp包含到基于OpenCV 3.0的项目中,因为使用ocl::function_name表示法。

编辑:OpenCV 3.0中有另一个ocl.hpp -它的含义与2.4分支完全不同:在后一种情况下,有所有opencl的函数定义,而在OpenCV 3.0中,它是与平台、上下文和设备相关的信息或调优。它可以包含在以下命令中:

代码语言:javascript
复制
#include <opencv2/core/ocl.hpp>

您的ocl.hpp来自/usr/include/ --您的系统中似乎也安装了一些OpenCV 2.4.x开发包--这是一个不同的分支,为了更好地清除,请删除所有libopencv*-dev包。如果您只想使用3.0版本,它将帮助您(移除模糊的标头)。

您应该在cmake <your opencv 3.0 source dir>make之后运行cmake <your opencv 3.0 source dir>--它将把所有必要的东西安装到您的系统中。默认情况下,所有标头都在/usr/local/include文件夹中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34422276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档