gpt4 book ai didi

opencv - 如何在 OpenCV 中使用 Mat::type() 找出 Mat 对象的类型?

转载 作者:太空宇宙 更新时间:2023-11-03 20:36:15 24 4
gpt4 key购买 nike

我对 OpenCV 中 Mat 对象的 type() 方法有些困惑。
如果我有以下几行:

mat = imread("C:\someimage.jpg");
type = mat.type();

type = 16,如何找出mat矩阵的类型?
我试图在它的手册和几本书都是徒劳的。

最佳答案

这是一个方便的函数,您可以使用它来帮助在运行时识别您的 opencv 矩阵。我发现它至少对调试很有用。

string type2str(int type) {
string r;

uchar depth = type & CV_MAT_DEPTH_MASK;
uchar chans = 1 + (type >> CV_CN_SHIFT);

switch ( depth ) {
case CV_8U: r = "8U"; break;
case CV_8S: r = "8S"; break;
case CV_16U: r = "16U"; break;
case CV_16S: r = "16S"; break;
case CV_32S: r = "32S"; break;
case CV_32F: r = "32F"; break;
case CV_64F: r = "64F"; break;
default: r = "User"; break;
}

r += "C";
r += (chans+'0');

return r;
}

如果 MMat 类型的变量,你可以这样调用它:

string ty =  type2str( M.type() );
printf("Matrix: %s %dx%d \n", ty.c_str(), M.cols, M.rows );

将输出如下数据:

Matrix: 8UC3 640x480 
Matrix: 64FC1 3x2

值得注意的是,还有 Matrix 方法 Mat::depth()Mat::channels()。此函数只是从这两个值的组合中获取人类可读解释的便捷方式,这两个值的位都存储在相同的值中。

关于opencv - 如何在 OpenCV 中使用 Mat::type() 找出 Mat 对象的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10167534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com