我读到有符号字符和无符号字符类型不能保证在每个平台上都是8位,但有时它们会超过8位。如果是这样,那么使用OpenCv我们如何确保CV_8U始终是8位的呢?我已经写了一个简短的函数,它接受一个8位的Mat,如果需要的话,碰巧将CV_8SC1 Mat元素转换为uchars,将CV_8UC1转换为schar。现在我担心它不是平台独立的,我应该以某种方式修复代码(但不知道如何修复)。
附言:同样的,在没有32位整型的机器上,CV_32S怎么总是整型呢?
发布于 2011-11-19 22:22:42
你能举个例子(我从来没听说过)吗?您可能指的是在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),而不是特定于平台的int、long等。
https://stackoverflow.com/questions/7609837
复制相似问题