首页 > 解决方案 > 如果函数使用 OPENCV Mat 作为输入,如何编写头文件?

问题描述

我写了一个使用 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_ 不是模板。

我对功能管理不是很熟悉,如果有人能提供帮助,我将不胜感激!

标签: c++opencvtemplates

解决方案


不要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);


推荐阅读