at 函式提取畫素點報錯

2021-08-25 06:01:03 字數 919 閱讀 1511

這是我的第一篇部落格,有點兒激動。就當是一篇小小的日記吧。剛剛大二,學習了半年的程式語言,只掌握了皮毛。想學太多東西,恨不得把要掌握的全部啃下了。我居然忘了靜下心來一步步才能走得遠走得穩。雖然我是個百得不能再白的小白,但是我會努力,我會一步步把我學到的東西記錄下來。不走彎路,不犯同樣的錯誤,加油!!

言歸正傳,今天我要記錄的問題是at()函式處理畫素點時cv_dbgassert((unsigned)(i1 * datatype<_tp>::channels) < (unsigned)(size.p[1] * channel報錯。報錯的情況如下圖:

我在vs中,試著通過at()函式遍歷二值影象的畫素點進而確定原點的位置,錯誤的**段如下:

問題就出在遍歷過程中通過矩陣點訪問畫素點越界了!!!原因有兩點:

第乙個是因為:判斷了(i,j)以及(i,j+1)的畫素值,當j取到cols時,j+1就超過了允許的範圍

第二是以為:當遍歷已經找到了頂點座標時,迴圈就可以結束了,往下繼續不僅消耗記憶體,而且還使j能夠達到cols處。

做出改變後的**如下:

for (int i = 0; i < pic.rows; i++) 

} }

讓j最多遍歷到cols-10,因為我需要處理的影象是這個樣子的,完全不需要遍歷到cols。

解答的不是很精彩,但是對於初學處理的我來說,這個問題困擾了我整整兩天。對於我這個問題是這樣解決的,一定還有其他的錯誤導致這個希望能對你的學習有一點點的幫助。我們一起加油哦!

openCV畫素點處理

獲得畫素點的值便可以更加靈活的進行影象處理,在opencv裡可以通過cvget2d 和cvset2d 兩個函式加上乙個cvscalar結構體做到。opencv中,cvscalar結構為 typedef struct cvscalar cvscalar 4個double型變數,演算法處理時不至於被強制...

GetPixel 取畫素點

函式原型 colorref getpixel hdc hdc,int nxpos,int nypos 引數 hdc 裝置環境控制代碼。nxpos 指定要檢查的畫素點的邏輯x軸座標。nypos 指定要檢查的畫素點的邏輯y軸座標。返回值 返回值是該象像點的rgb值。如果指定的畫素點在當前剪輯區之外 那麼...

畫素點的Hessian矩陣

最近開始學習影象處理相關知識,碰到對畫素點求黑塞矩陣查了資料才搞懂。給定乙個影象f x,y 上的一點 x,y 其黑塞矩陣如下 因為導數的公式是 f x f x dx f x dx 在數字影象裡,通常用相鄰畫素的灰度值來計算,它們的距離 dx 1。一階導數就是相鄰畫素的灰度值的差 f x f x 1 ...