在 Mat 和 Mat1b/Mat3b 之间进行转换
conversion between Mat and Mat1b/Mat3b
我想将我的代码匹配到给定的接口中。在我的类中,在所有方法中,我都使用cv::Mat格式。当它放在使用 cv::Mat3b 并返回 cv::Mat1b 的 SubMain 函数中时,它不起作用。如何更改它以便我可以使用我的书面课程?我确信一定存在简单的转换,但是我没有找到,我从opencv开始。提前感谢您的帮助。如果有人能很快指出何时使用 Mat1b/Mat3b 而不是 Mat,他们将不胜感激,他们的角色是什么?(我总是看到使用 Mat 的例子。
cv::Mat1b SubMain(const cv::Mat3b& img)
{
OperateImage opImg(img);
opImg.Trafo(img); // being used as reference in my methods
return img;
}
Mat1b
和Mat3b
只是Mat
类型的两个预定义情况,它们在core.hpp
中定义如下:
typedef Mat_<uchar> Mat1b;
...
typedef Mat_<Vec3b> Mat3b;
也就是说,垫子和Mat1b
/Mat3b
之间的转换应该是非常自然/自动的:
Mat1b mat1b;
Mat3b mat3b;
Mat mat;
mat = mat1b;
mat = mat3b;
mat1b = mat;
mat3b = mat;
回到您的案例,您的问题不应归因于他们的转化,而应归因于您定义SubMain()
的方式以及使用它的方式。SubMain()
的输入参数是一个const cv::Mat3b &
,但是,您正在尝试修改其标头以将其更改为函数内部的Mat1b
。
如果您将其更改为可以,例如:
cv::Mat1b SubMain(const cv::Mat3b& img)
{
cv::Mat tmp = img.clone();
OperateImage opImg(tmp);
opImg.Trafo(tmp);
return tmp;
}
相关文章:
- 在 Rcpp 中的字符串类型之间转换时出错
- r-在Rcpp和C++之间转换矢量(使用Rcpp::as或Rcpp:::wrap)是否会创建一个新的矢量并复制元素
- 在不同类型之间转换常量指针
- 在 3D 骨架系统 DirectX 之间转换
- C++ 如何将用户控件添加到窗体,以便我可以在面板之间转换
- 在 std::u8string 和 std::string 之间转换
- 如何在Unicode/UCS CodePoint和UTF16替代对之间转换
- 在DXGI格式之间转换RGBA数据
- 在两个不动点表达之间转换
- 在函数指针类型之间转换
- 代码的错误答案是在Java Camel案件和C 下划线标识符之间转换的错误答案
- 如何在C 中的不同类之间转换
- 一个关于C++中double和int之间转换的奇怪结果
- 模板类在模板类型之间转换,但也专门化
- 是否有Visual c++编译器在线,以及如何在c++和vs简单代码之间转换
- c/在Unix时间和"Gregorian time"之间转换
- 无法使用iconv在编码之间转换
- 在std::string和std::wstring之间转换的多平台方式
- 我真的应该每次在基元类型之间转换时都使用static_cast吗
- 使用Boost::units在两个量之间转换的最简单方法