如何确定cv :: Mat的人类可读类型?

时间:2012-04-08 10:14:35

标签: opencv

我目前的问题是,我想知道cv::Mat的类型 - cv::VideoCapture从视频文件中抓取的帧数。文档没有具体说明(通常情况就是如此,所以即使我在这种特殊情况下忽略了它,一般来说,解决问题仍然有帮助。)

当然,我可以打开相应的OpenCV头文件并浏览CV_64FC2,...宏来查找与Mat的type()匹配的宏。但我有点厌倦了。必须有一个更简单的方法。

是否有任何功能可以让我将Mat的type()翻译成人类可读的格式?像这样:

cv::Mat myMatWithUnknownType;

// Some code modifying myMatWithUnknownType.
// ...

std::string readableType = myMatWithUnknownType.typeString();
std::cout << readableType; // Prints "CV_64FC3".

你是如何处理的?

1 个答案:

答案 0 :(得分:1)

首先,来自相机的格式只有一个:CV_8UC3。这在OpenCV中是硬编码的,任何视频格式在发送给用户之前都会转换为此格式。所以

capture >> frame; 

将始终返回每个通道8位的RGB图像。

现在,对于其他类型,您可以编写函数,保持在OpenCV中支持的类型不多:Mat可以是charuchar,{{1}类型},shortushortintuintfloat,1到512个频道(根据最新文档。)所以编写自己的{ {1}}并不难。