OpenCV中如何獲取畫素

2021-06-08 18:55:01 字數 1821 閱讀 5568

座標是從0開始的,並且是相對影象原點的位置。影象原點或者是左上角 (img->origin=ipl_origin_tl) 或者是左下角 (img->origin=ipl_origin_bl) )

i(x,y) ~ ((uchar*)(img->imagedata + img->widthstep*y))[x]
i(x,y)blue ~ ((uchar*)(img->imagedata + img->widthstep*y))[x*3] i(x,y)green ~ ((uchar*)(img->imagedata + img->widthstep*y))[x*3+1] i(x,y)red ~ ((uchar*)(img->imagedata + img->widthstep*y))[x*3+2]
例如,給點 (100,100) 的亮度增加 30 ,那麼可以這樣做:

cvpoint pt = ; ((uchar*)(img->imagedata + img->widthstep*pt.y))[pt.x*3] += 30; ((uchar*)(img->imagedata + img->widthstep*pt.y))[pt.x*3+1] += 30; ((uchar*)(img->imagedata + img->widthstep*pt.y))[pt.x*3+2] += 30;
或者更高效地:

cvpoint pt = ; uchar* temp_ptr = &((uchar*)(img->imagedata + img->widthstep*pt.y))[pt.x*3]; temp_ptr[0] += 30; temp_ptr[1] += 30; temp_ptr[2] += 30;
i(x,y) ~ ((float*)(img->imagedata + img->widthstep*y))[x]
i(x,y)c ~ ((t*)(img->imagedata + img->widthstep*y))[x*n + c]
你可以使用巨集 cv_image_elem( image_header, elemtype, y, x_nc )

i(x,y)c ~ cv_image_elem( img, t, y, x*n + c )
也有針對各種影象(包括 4 通道影象)和矩陣的函式(cvget2d, cvset2d), 但是它們非常慢。

[ 編輯]

方法是類似的(下面的例子都是針對 0 起點的列和行)

m(i,j) ~ ((float*)(mat->data.ptr + mat->step*i))[j]
re m(i,j) ~ ((double*)(mat->data.ptr + mat->step*i))[j*2] im m(i,j) ~ ((double*)(mat->data.ptr + mat->step*i))[j*2+1]
m(i,j) ~ cv_mat_elem( mat, float, i, j ),
例如,這兒是乙個 3x3 單位矩陣的初始化:

cv_mat_elem( mat, float, 0, 0 ) = 1.f; cv_mat_elem( mat, float, 0, 1 ) = 0.f; cv_mat_elem( mat, float, 0, 2 ) = 0.f; cv_mat_elem( mat, float, 1, 0 ) = 0.f; cv_mat_elem( mat, float, 1, 1 ) = 1.f; cv_mat_elem( mat, float, 1, 2 ) = 0.f; cv_mat_elem( mat, float, 2, 0 ) = 0.f; cv_mat_elem( mat, float, 2, 1 ) = 0.f; cv_mat_elem( mat, float, 2, 2 ) = 1.f;

opencv獲取畫素的值

opencv中獲取影象畫素的方法 方法一 注意記憶體中儲存順序是bgr 方法二 for int i 0 i img height i 方法三 對於單通道位元組型影象 iplimage img cvcreateimage cvsize 640,480 ipl depth 8u,1 uchar img ...

OpenCv畫素點獲取與修改

1 matlab獲取彩色影象畫素值的方法 三通道排序分別對應彩色影象的rgb三通道 2 opencv中獲取影象畫素的方法 方法一 注意記憶體中儲存順序是bgr 方法二 for int i 0 i img height i 假設灰度影象image,訪問其i行j列的象素可以這樣 cv image ele...

opencv畫素操作

1 bit depth 位元數 代表8bite,16bites,32bites,64bites 舉個例子吧 比如說,如 如果你現在建立了乙個儲存 灰度的mat物件,這個影象的大小為寬100,高100,那麼,現在這張 灰度中有10000個畫素點,它每乙個畫素點在記憶體空間所佔的空間大小是8bite,8...