CV IMAGE ELEM引數賦值時注意的問題

2021-08-25 13:20:14 字數 712 閱讀 6566

**:

cv_image_elem是乙個巨集,

#define cv_image_elem( image, elemtype, row, col ) /

(((elemtype*)((image)->imagedata + (image)->widthstep*(row)))[(col)])

#define cv_mat_elem( mat, elemtype, row, col ) /

(*(elemtype*)cv_mat_elem_ptr_fast( mat, row, col, sizeof(elemtype)))

呵呵,我一直把它當乙個函式用,其實本質也沒有什麼區別的

但要想正確的得到影象的座標為(x,y)點的畫素值,是應該這樣寫cv_image_elem(image, uchar, y, x)

要注意畫素點的座標xy和行列值的順序是相反的(可以仔細思考為什麼)

我剛開始一直寫成cv_image_elem(image, uchar, x, y),結果有時候就造成了訪問image越界,從而報錯,花了好長時間才搗鼓出來,

不過將image的資料按照原來的樣子複製到mat中可以這麼寫:

cv_image_elem(pimage, uchar, i, j) = cv_mat_elem(*mat, uchar, i, j)

不用改變順序

總之,當應用這個巨集是如果老報錯,就試試換個順序,或者檢查訪問的位址是否越界

OpenCV 中CV IMAGE ELEM 的使用

cv image elem image,elemtype,row,col 其中,image為指標陣列,elemtype為資料的訪問型別,row為影象的高度,範圍 0 height col為影象的寬度,範圍 0 width height cvgetsize image height width cvg...

C 函式引數賦值

c 語法中有這樣一種規定 當呼叫函式時,沒有指定引數值,引數就會被賦預設值,但是,此函式必須是在第一次宣告或第一次定義的時候,給引數指定了預設值。在使用時應該注意以下幾點 第一點 引數預設值只允許設定一次,要麼在第一次函式宣告時設定,要麼在沒有函式宣告的情況下,在函式定義中設定 第二點 設定引數預設...

函式引數的解構賦值

函式的引數也可以使用解構賦值。function add x,y add 1 2 3 上面 中,函式add的引數表面上是乙個陣列,但在傳入引數的那一刻,陣列引數就被解構成變數x和y。對於函式內部的 來說,它們能感受到的引數就是x和y。下面是另乙個例子。1,2 3 4 map a,b a b 3,7 函...