C++ 为什么opencv';s Mat::rows和Mat::cols是否已签名而不是未签名?
我正在用gcc的C++ 为什么opencv';s Mat::rows和Mat::cols是否已签名而不是未签名?,c++,opencv,C++,Opencv,我正在用gcc的-Wall标志编译一个程序。我在某个点对Mat::cols和Mat::rows进行比较(使用无符号整数),并得到一个关于比较有符号整数和无符号整数的警告。尽管抛弃这一点没什么大不了的,但我很好奇Mat的负尺寸背后的原理是什么 从逻辑上讲,一个矩阵不能比一个空矩阵(0行0列)更空,那么一个-1行或-1列的矩阵意味着什么呢 我想是因为大部分inti被用作循环计数器。当uint为cols和rows时,将出现许多警告。此外,构建维度差异会更容易出错 除此之外。在我看来,OpenCv根本不
-Wall
标志编译一个程序。我在某个点对Mat::cols
和Mat::rows
进行比较(使用无符号整数),并得到一个关于比较有符号整数和无符号整数的警告。尽管抛弃这一点没什么大不了的,但我很好奇Mat
的负尺寸背后的原理是什么
从逻辑上讲,一个矩阵不能比一个空矩阵(0行0列)更空,那么一个-1行或-1列的矩阵意味着什么呢
我想是因为大部分
inti
被用作循环计数器。当uint为cols和rows时,将出现许多警告。此外,构建维度差异会更容易出错
除此之外。在我看来,OpenCv根本不是一个好设计的好例子。
有几十个坏类设计的例子。此外,生成文档的设计也很糟糕(例如,函数及其参数的所有重载都混合在一起)
但它是一个非常全面和良好的图像处理库。这是一个很好的借口:)我认为这只是一个设计缺陷。很多人,包括许多知名大型图书馆的作者,都不太善于使用整数类型。对所有类型的整数使用
int
是一个常见的错误。我误解了这个问题,我的错。我想到了Mat中的价值观。删除我的帖子。我也讨厌这样。行和.col被签名。。。刚刚习惯于在std::vector的无符号类型上循环…我认为vlad关于int循环计数器的说法可能是一个原因。我个人总是使用大小作为循环计数器类型。需要更多的键入,但对于大小和索引来说,这是正确的类型