浅比较cv :: Mat对象(具有相同的标头)

时间:2018-09-07 07:22:48

标签: opencv mat

如何有效地验证2个UMat(和Mat)对象是否相同并指向相同的数据,这意味着它们具有相同的标头?我需要一个isShallowEqual()函数,如下所示:

int someData [4] {1,2,3,4};
Mat m1 (2, 2, CV_32F, someData);
UMat u1;
UMat u2;
UMat u3;
m1.copyTo(u1);
//isShallowEqual(u1,u1) should return true
u2=u1;
//isShallowEqual(u1,u2) should return true
u1.copyTo(u3);
//isShallowEqual(u1,u3) should return false

以及Mats的类似情况:

int someData [4] {1,2,3,4};
Mat m1 (2, 2, CV_32F, someData);
UMat m2, m3;
//isShallowEqual(m1,m1) should return true
m2=m1;
//isShallowEqual(m1,m2) should return true
m1.copyTo(m3);
//isShallowEqual(m1,m3) should return false

我可能会通过Mats来检查大小,类型,步长和.data字段,但不知道如何获取与UMats等效的.data字段

我已经尝试使用memcmp,但是 memcmp(&m1,&m2, sizeof(m1))不会返回0(对于UMat同样) 在Mat的情况下,我比较了公共属性:

  • 分配器
  • cols
  • 数据
  • 数据端
  • 数据限制
  • 数据启动
  • 昏暗
  • 标志
  • 大小
  • 步骤
  • u

所有结果都等于m1和m2。

0 个答案:

没有答案