报错:
error: expected type-specifier
operator cv::_InputOutputArray() {
报错代码:
#include <Eigen/Core>
#include <opencv2/opencv.hpp>
// 167 line
operator cv::_InputOutputArray() {
return cv::_InputOutputArray(this->mBody);
}
原因:
????????当前opencv版本可能不包含cv::_InputOutputArray() 函数,或者函数形式不一样
(1)本机opencv版本
pkg-config --modversion opencv
即版本为opencv2.4.13?
?(2)目标opencv版本
????????根据经验,此代码在opencv3.2时可以编译过,暂时定为opencv3.2。
? ? ? ? 上opencv官方手册(OpenCV: cv::_InputOutputArray Class Reference)确认opencv3.2是否包含cv::_InputOutputArray() 函数,确实包含,如下图所示:
?
? ? ? ? opencv3.2.0 编译效果如下,具体编译操作请自行百度一下啦~,编译目录为下图中的build
(3)修改CmakeLists.txt
????????修改前:
# 修改前,这里没有加set(OpenCV_DIR xxx)操作,使用的是系统默认的opencv版本即2.4.13
find_package(OpenCV REQUIRED)#biter0088 0917
?????????修改后
set(OpenCV_DIR /home/agilex/Downloads/opencv3.2/opencv-3.2.0/build)#biter0088 0917
# /home/agilex/Downloads/opencv3.2/opencv-3.2.0/build? ? 为(2)中编译目录
find_package(OpenCV 3 REQUIRED)#biter0088 0917
#或
#find_package(OpenCV 3.2 REQUIRED)#biter0088 0917
????????修改后编译通过
|