为什么opencv的Mat :: rows和Mat :: cols签名而不是unsigned?

Sve*_*ely 9 c++ opencv

我正在使用gcc的-Wall标志编译程序.我做一个比较(具有一个unsigned int)上Mat::cols,并Mat::rows在某些时候,并获得有关比较符号和无符号整数警告.虽然抛出这个并不是什么大不了的事情,但我很好奇它背后的理由Mat是什么.

从逻辑上讲,矩阵不能比空矩阵(0行和0列)更空,那么-1行或-1列的矩阵意味着什么?

在有符号和无符号整数上的计算之间似乎没有太大的性能差异.

vla*_*sch 5

我认为因为主要int i用作循环计数器.使用uint作为cols和rows,将出现许多警告.同样建立尺寸差异会更容易出错.

除此之外.在我看来,OpenCv根本不是一个好的设计的好例子.有几十个坏班设计的例子.生成的文档的设计也很糟糕(例如,函数的所有重载及其参数混合在一起).

但它是一个非常全面和良好的图像处理库.那个借口很多:)