opencv(14):error: expected type-specifier operator cv::_InputOutputArray()

发布于:2022-12-14 ⋅ 阅读:(353) ⋅ 点赞:(0)

报错:

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

        修改后编译通过


网站公告

今日签到

点亮在社区的每一天
去签到