没有8位系统的CV_8U opencv矩阵

时间:2011-09-30 11:42:48

标签: opencv

我已经读过,在每个平台上都不能保证签名的char和unsigned char类型是8位,但有时候它们有8位以上。 如果是这样,使用OpenCv我们如何确定CV_8U总是8位? 我写了一个带有8位Mat的短函数,并且如果需要,可以将CV_8SC1 Mat元素转换为uchars,将CV_8UC1转换为schar。 现在我担心它不是平台无关的我应该以某种方式修复代码(但不知道如何)。

P.S。:同样,CV_32S如何永远是int,也可以在没有32位整数的机器上?

1 个答案:

答案 0 :(得分:1)

你可以参考一下吗(我从未听说过)?可能你的意思是可以在cv :: Mat的行尾添加的填充。这没有问题,因为通常不使用填充,特别是如果使用接口函数,例如没有问题,例如,迭代器(c.f.)。如果您要发布一些代码,我们可以看到,如果您的实现确实存在这样的问题。

// template methods for iteration over matrix elements.
// the iterators take care of skipping gaps in the end of rows (if any)
template<typename _Tp> MatIterator_<_Tp> begin();
template<typename _Tp> MatIterator_<_Tp> end();

CV_32S将始终为32位整数,因为它们使用inttypes.h中定义的类型(例如int32_tuint32_t)而不是特定于平台{{ 1}},int,无论如何。