我在ubuntu14.04中使用opencv 3.0.0。我安装了AMD催化剂视频驱动程序来使用OpenCV和OpenCL。
/etc/OpenCL/供应商有"amdocl32.icd amdocl64“和"libamdocl32.so”和"libamdocl64.so“。
在opencv cmake文件中,OpenCV显示为:
-- 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 )。编译器返回他的消息:
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上测试腐蚀和膨胀滤光片。
有人知道为什么会发生这种事吗?
发布于 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中,它是与平台、上下文和设备相关的信息或调优。它可以包含在以下命令中:
#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文件夹中。
https://stackoverflow.com/questions/34422276
复制相似问题