我已经读过,在每个平台上都不能保证签名的char和unsigned char类型是8位,但有时候它们有8位以上。 如果是这样,使用OpenCv我们如何确定CV_8U总是8位? 我写了一个带有8位Mat的短函数,并且如果需要,可以将CV_8SC1 Mat元素转换为uchars,将CV_8UC1转换为schar。 现在我担心它不是平台无关的我应该以某种方式修复代码(但不知道如何)。
P.S。:同样,CV_32S如何永远是int,也可以在没有32位整数的机器上?
答案 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_t
,uint32_t
)而不是特定于平台{{ 1}},int
,无论如何。