gpt4 book ai didi

c++ - 获取 OpenCV 图像类型的枚举名称(例如 CV_32FC1)?

转载 作者:IT老高 更新时间:2023-10-28 21:44:44 26 4
gpt4 key购买 nike

在 OpenCV 的 C++ 接口(interface)中,检查图像的类型似乎很容易。如果你有一个图像cv::Mat img = cv::imread("someImage.xyz"),你只需要int theType = img.type()

但是,正如您所料,调用 img.type() 只会给出一个整数,而不是枚举名称(例如 CV_32FC1)。

如果我知道 OpenCV 枚举的整数值,是否有一种简单的方法可以打印出枚举名称(例如 CV_32FC1)?

最佳答案

据我所知,OpenCV 中不存在这样的功能。

我认为你最好编写自己的函数来获得这些。很多开关盒,但我想它可以完成工作。枚举可以找到here .

编辑:

这是你可以用来提取类型的东西。我猜可能有一种更有效的方法,但我现在无法理解它。

std::string getImageType(int number)
{
// find type
int imgTypeInt = number%8;
std::string imgTypeString;

switch (imgTypeInt)
{
case 0:
imgTypeString = "8U";
break;
case 1:
imgTypeString = "8S";
break;
case 2:
imgTypeString = "16U";
break;
case 3:
imgTypeString = "16S";
break;
case 4:
imgTypeString = "32S";
break;
case 5:
imgTypeString = "32F";
break;
case 6:
imgTypeString = "64F";
break;
default:
break;
}

// find channel
int channel = (number/8) + 1;

std::stringstream type;
type<<"CV_"<<imgTypeString<<"C"<<channel;

return type.str();
}

关于c++ - 获取 OpenCV 图像类型的枚举名称(例如 CV_32FC1)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12335663/

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