opencv - 无 8 位系统上的 CV_8U opencv 矩阵

我已经读过有符号字符和无符号字符类型不能保证在每个平台上都是 8 位,但有时它们有超过 8 位。
如果是这样,使用 OpenCv 我们如何确定 CV_8U 始终是 8bit?
我编写了一个简短的函数,它需要一个 8 位 Mat 并且碰巧将 CV_8SC1 Mat 元素转换为 uchars 并将 CV_8UC1 转换为 schar。
现在恐怕它不是独立于平台的,我应该以某种方式修复代码(但不知道如何)。

P.S.:同样,CV_32S 怎么总是 int,在没有 32 位整数的机器上也是如此?

最佳答案

你能提供一个引用(我从未听说过)吗?可能您的意思是可以在 cv::Mat 中的一行末尾添加的填充。这没问题,因为通常不使用填充,特别是如果您使用接口(interface)函数,例如迭代器(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 )而不是特定于平台的 int , long , 任何。

https://stackoverflow.com/questions/7609837/

相关文章:

opencv - 无法让 OpenCV + macam.component + PS3Eye 工作

opencv - OpenCV入门,API函数使用推荐

random - 检测到随机圆

opencv - 在Ubuntu服务器11.10上安装OpenCV预构建库

docker - 私有(private) Docker 注册表的多个用户?

android - 如何使用三星 Galaxy S2 前置摄像头?

java - 如何将本地 Docker 镜像与 testcontainers 一起使用?

opencv - 摄像机旋转和跟踪平移?

docker - 在 compose 中取消设置环境变量

opencv - opencv在照片中查找并处理商店货架标签