如果函数使用OPENCV Mat作为输入,如何写头文件?

时间:2018-08-23 18:34:10

标签: c++ opencv templates

我使用Mat_类型作为输入编写了一个函数,该函数的语法如下:

#include<iostream>
#include"opencv2\opencv.hpp"

using namespace std;
using namespace cv;

Mat_<double> histcost(Mat_<double> BH1, Mat_<double> BH2) {
    Mat_<double> output;
    ...
    return output;
}

但是当我尝试编写此函数的头文件时:

#pragma once
extern Mat_<double> histcost(Mat_<double> BH1, Mat_<double> BH2);

它给我一个错误:Mat_不是模板。

我对功能管理不是很熟悉,如果有人可以帮助我,我将非常感谢!

1 个答案:

答案 0 :(得分:0)

不要使用Mat_< >,而要使用常规的cv::Mat() cv :: Mat可以包含任何类型的数据,您无需告诉它类型。

Mat_<double>是一种特殊的捷径,可以直接从固定数据制作cv:Mat,除非真正进行性能调优并知道自己在做什么,否则不要在任何地方使用它。

Mat_ < >语法示例(仅用于搜索)

Mat X = (Mat_<double>(4, 4) <<0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14,15);