我在讀取像素值(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