读取像素值方法?

时间:2012-09-21 15:15:48

标签: opencv

我在读取像素值方面遇到了问题(w = 30,h = 10)。假设我正在使用

  1. int readValue = cvGetReal2D(img,y,x);和
  2. int readValue = data [y * step + x];
  3. 假设我正在尝试使用(1)和(2)方法访问w = 35,h = 5的像素值。 (1)将输出索引超出范围的错误。但为什么(2)不输出索引误差超出范围?

    之后,我正在尝试使用try ... catch()...

1 个答案:

答案 0 :(得分:1)

你有一段连续的记忆

size  = w*h = 300

在w = 35且h = 5时,等式给出

data[5*30+35] = data[190] < data[300]

所以没有错误。如果这是c ++,那么即使数据中的索引大于299,也不会产生错误。在这种情况下,您将访问超出其边界的数据,从而导致未定义的行为。

我假设cvGetReal2D(img,y,x)足够聪明,可以告诉您,其中一个索引大于该维度的定义大小,即使它可以解析为有效地址。