OpenCV 2.1:ostream operator<< for cv::Mat 在哪里?

Posted

技术标签:

【中文标题】OpenCV 2.1:ostream operator<< for cv::Mat 在哪里?【英文标题】:OpenCV 2.1: where is ostream operator<< for cv::Mat? 【发布时间】:2012-04-04 13:10:30 【问题描述】:

在this question 之后,我正在尝试将cv::Mat 的内容打印到标准输出:

#include <iostream>
#include <opencv/cv.h>
#include <opencv/cv.hpp>
#include <opencv/cxcore.h>
#include <opencv/cxcore.hpp>

int main() 

  cv::Mat m = cv::Mat::ones(10, 10, CV_32S);
  std::cout << m << "\n";


这会导致错误

error: no match for ‘operator<<’ in ‘std::cout << m’

我在 Ubuntu 11.10 上使用 gcc 4.6.1,并安装了 opencv,不包括示例,遵循these instructions。我的问题是,该运算符是否在 2.1 中可用,如果可以,我如何获得它?

【问题讨论】:

如果没有定义算子,可能需要升级到2.2或以上。 【参考方案1】:

更新到 OpenCV 2.2(或更高版本)和#include &lt;opencv2/opencv.hpp&gt;

定义在modules/core/include/opencv2/core/operations.hpp

【讨论】:

谢谢。经过相当痛苦的 opencv 2.3.1 安装后,它可以工作了。该示例所需的唯一标头是 .【参考方案2】:

如果未定义运算符,您可能需要升级到 2.2 或更高版本。 记录在 Here 中,您可以在其中找到重载的运算符代码。

【讨论】:

以上是关于OpenCV 2.1:ostream operator<< for cv::Mat 在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

SAD算法在opencv上的实现代码(c++)

c_cpp Operatörler

rest operater剩余操作符

Es6之Spread Operater拷贝对象

SWIG Python 绑定到本地代码不适用于 OpenCV 2.1

static Constant expression contains invalid operat