opencv3和opencv4的版本切换

1.opencv/cv.h: 没有那个文件或目录

将opencv/cv.h:修改为

#include <opencv2/opencv.hpp>

2.‘CvMat’ has not been declared

添加头文件

#include <opencv2/core/types_c.h>

3.‘CV_REDUCE_SUM’ was not declared in this scope

添加头文件

#include<opencv2/core/core_c.h>

4.‘cvCreateMat’ was not declared in this scope;

等以下的报错
在这里插入图片描述
添加头文件

#include <opencv2/imgproc/types_c.h>

#include <opencv2/imgproc.hpp>

5. 编译DBoW2等出现"OpenCV > 2.4.3 not found."

make[2]: *** No rule to make target '../Thirdparty/DBoW2/lib/libDBoW2.so', needed by '../lib/libORB_SLAM2.so'

将CMakeLists.txt的opencv改称对应版本

6.‘CV_LOAD_IMAGE_UNCHANGED’ was not declared in this scope

修改为

cv::IMREAD_UNCHANGED
   CV_LOAD_IMAGE_UNCHANGED  = -1 ( = cv::IMREAD_UNCHANGED),
   CV_LOAD_IMAGE_GRAYSCALE 	= 0  ( = cv::IMREAD_GRAYSCALE),
   CV_LOAD_IMAGE_COLOR     	= 1  ( = cv::IMREAD_COLOR),
   CV_LOAD_IMAGE_ANYDEPTH   = 2  ( = cv::IMREAD_ANYDEPTH),
   CV_LOAD_IMAGE_ANYCOLOR   = 4

7. ‘CV_GRAY2BGR’ was not declared in this scope

修改方法为:将CV_GRAY2BGR改为cv::COLOR_GRAY2BGR
其余颜色变换也是将CV_改为cv::COLOR
或者加入头文件

#include <opencv2/imgproc/types_c.h>

8. error: ‘CV_CALIB_CB_ADAPTIVE_THRESH’ was not declared in this scope

#include <opencv2/calib3d/calib3d_c.h>

9.‘CV_AA’ was not declared in this scope

#include <opencv2/imgproc/imgproc_c.h>

10.‘CV_FONT_HERSHEY_SIMPLEX’ was not declared in this scope

修改方法:将CV_FONT_HERSHEY_SIMPLEX改为cv::FONT_HERSHEY_SIMPLEX

11. error: ‘CV_REDUCE_SUM’ was not declared in this scope

#include<opencv2/core/core_c.h>

12.error: static assertion failed: std::map must have the same value_type as its allocator

在loopClosing.h:50修改

typedef map<KeyFrame*,                  //键
                g2o::Sim3,                  //值
                std::less<KeyFrame*>,       //排序算法
                Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > // 指定分配器,和内存空间开辟有关. 为了能够使用Eigen库中的SSE和AVX指令集加速,需要将传统STL容器中的数据进行对齐处理
                > KeyFrameAndPose;

typedef map<KeyFrame*,                  //键
                g2o::Sim3,                  //值
                std::less<KeyFrame*>,       //排序算法
                Eigen::aligned_allocator<std::pair<KeyFrame* const , g2o::Sim3> > // 指定分配器,和内存空间开辟有关. 为了能够使用Eigen库中的SSE和AVX指令集加速,需要将传统STL容器中的数据进行对齐处理
                > KeyFrameAndPose;
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用 Delphi-OpenCV 进行两张图像对比的示例代码: ```delphi uses CvTypes, CvImgProc, CvHighgui; function CompareImages(const Image1, Image2: string): Single; var Img1, Img2: pIplImage; Hist1, Hist2: pCvHistogram; Mat1, Mat2: pCvMat; begin // 读取图像 Img1 := LoadImage(Image1); Img2 := LoadImage(Image2); // 转换为灰度图像 cvCvtColor(Img1, Img1, CV_BGR2GRAY); cvCvtColor(Img2, Img2, CV_BGR2GRAY); // 计算直方图 Hist1 := cvCreateHist([256], CV_HIST_ARRAY, cvCreateMat(1, 256, CV_32FC1), 1); Hist2 := cvCreateHist([256], CV_HIST_ARRAY, cvCreateMat(1, 256, CV_32FC1), 1); Mat1 := cvCreateMat(Img1.height, Img1.width, CV_8UC1); Mat2 := cvCreateMat(Img2.height, Img2.width, CV_8UC1); cvConvert(Img1, Mat1); cvConvert(Img2, Mat2); cvCalcHist(@Mat1, Hist1); cvCalcHist(@Mat2, Hist2); // 比较直方图 Result := cvCompareHist(Hist1, Hist2, CV_COMP_CORREL); // 释放资源 cvReleaseMat(@Mat1); cvReleaseMat(@Mat2); cvReleaseHist(@Hist1); cvReleaseHist(@Hist2); cvReleaseImage(@Img1); cvReleaseImage(@Img2); end; ``` 在上述代码中,`Image1` 和 `Image2` 分别为待比较的两张图像的文件路径。我们首先使用 Delphi-OpenCV 中提供的 `LoadImage` 函数读取图像,并使用 `cvCvtColor` 函数将图像转换为灰度图像。然后,我们使用 `cvCalcHist` 函数计算两张图像的直方图,并使用 `cvCompareHist` 函数比较两个直方图的相似度。最后,我们返回相似度的值。需要注意的是,我们在比较直方图时使用了 `CV_COMP_CORREL` 参数,表示使用相关性作为相似度的度量方式。你可以根据具体需求调整参数值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值