鉴于opencv::Mat m1,m2
,我想检查m1[i][j]
和m2[i][j]
是否相等。
我已经看到有两种方法可以做到这一点:
if(m1.row(i).col(j) == m2.row(i).col(j))
和
if(m1.at<float>(i,j)==m2.at<float>(i,j))
请注意,m1
和m2
都是SIFT矩阵描述符(因此float
是元素类型)。
我的问题是:两种访问方法之间的区别是什么?
答案 0 :(得分:2)
虽然这两项操作的最终结果相同,但第一项操作成本更高:
m1.row(i)
创建一个代表行Mat
的{{1}}对象,然后i
返回的col(j)
调用Mat
,以获取m1.row(i)
Mat
(i, j)
m2
个对象与Mat
相比之下,==
只返回一个m1.at<float>(i,j)
,然后与另一个浮点数进行比较,而不会创建任何其他对象。