我在读取像素值(w = 30,h = 10)时遇到问题。假设我正在使用阅读像素值方法?
- int readValue = cvGetReal2D(img,y,x);和
- int readValue = data [y * step + x];
可以说我试图使用(1)和(2)方法在w = 35,h = 5时访问像素值。 (1)会输出索引超出范围的错误。但为什么(2)不会输出索引超出范围的错误?
在那之后,我想使用的try ... catch()...
我在读取像素值(w = 30,h = 10)时遇到问题。假设我正在使用阅读像素值方法?
可以说我试图使用(1)和(2)方法在w = 35,h = 5时访问像素值。 (1)会输出索引超出范围的错误。但为什么(2)不会输出索引超出范围的错误?
在那之后,我想使用的try ... catch()...
你的
size = w*h = 300
在W = 35和h = 5内存连续块你的方程给出
data[5*30+35] = data[190] < data[300]
所以没有错误。如果这是C++,那么即使数据中的索引大于299,也不会抛出错误。在这种情况下,您将访问超出其范围的数据,导致未定义的行为。
我认为cvGetReal2D(img,y,x)足够聪明,可以告诉你其中一个索引大于该维度的定义大小,即使它可以解析为有效地址。
这是什么语言? C++? C#? – Hammer
看看:http://stackoverflow.com/questions/12512632/opencv-matrix-values-display/12514307#12514307 – masad
我会看看它。谢谢。 – Mzk