Opencv C++ 声明 uint8 类型的矩阵

Posted

技术标签:

【中文标题】Opencv C++ 声明 uint8 类型的矩阵【英文标题】:Opencv C++ Declaring a matrix of type uint8 【发布时间】:2018-01-24 21:22:11 【问题描述】:

相当简单的问题:我想知道如何在 opencv 中指定矩阵的类型。我正在查看此页面https://docs.opencv.org/trunk/dc/d84/group__core__basic.html,它为具有 cv::Mat1f 等的浮点矩阵指定了 typedef。我不熟悉 C++;我可以使用他们在 typedefs 中所做的类似事情来制作我自己的 uint8 矩阵吗?

Mat_< uint8 > mymatrix; 或类似的东西?我可以自己做 typedef 吗?

【问题讨论】:

【参考方案1】:

C++ 中的标准类型是uint8_t,即Mat_< uint8_t > mymatrix;。你需要#include <cstdint>

你也可以自己做typedef

typedef Mat_< uint8_t > uint8_matrix_type;

或类似的东西。

【讨论】:

【参考方案2】:

你应该使用内置的:

cv::Mat1b

mat.hpp 中定义为:

typedef Mat_<uchar> Mat1b;

ucharinterface.h 中定义:

//! - uchar  - unsigned 1 byte integer
typedef unsigned char uchar;

您也可以typedef 使用您喜欢的类型的矩阵,但是您可能会遇到奇怪的错误,因为它的DataType(在traits.hpp)不会被指定,所以它可能与某些 OpenCV 功能不兼容。

【讨论】:

以上是关于Opencv C++ 声明 uint8 类型的矩阵的主要内容,如果未能解决你的问题,请参考以下文章

使用 C++ 在 OpenCV 中的矩阵中的多维数据

opencv imshow()

OpenCV中的绘图函数-OpenCV步步精深

为啥MATLAB不能保存uint8类型的矩阵?

C++ & OpenCV 零散学习总结

Opencv C++读取分配给特征向量的opencv Mat