[問題] 請問opencv讀pixel

看板C_and_CPP (C/C++)作者 (想唱歌)時間16年前 (2009/06/14 00:38), 編輯推噓1(105)
留言6則, 2人參與, 最新討論串1/1
請問一下有用過opencv的高手們 我用cvGet2D這個function想要抓取圖中某點的pixel值 類似下面這樣的function: for(int i=0;i<Height;i++) { for(int j=0;j<Width;j++) { Scalar1=cvGet2D(Image1,i,j); Blue[i][j]=Scalar1.val[0]; Green[i][j]=Scalar1.val[1]; Red[i][j]=Scalar1.val[2]; } } 不過我查很久好像都是抓RGB的資料, 那假如我的原始img是8bit單通道的灰階圖(cvLoadImage強制讀取灰階) 也能夠用這個function嗎?可以的話要怎麼取值呢? 還是灰階就沒辦法了? 我又試了另一種寫法: int pixel; pixel = (int)(UCHAR*)(pImg->imageData+pImg->widthStep*120)[160]; printf("%d", pixel); 可能是我寫錯了 得出來的值是-18 請問一下要怎麼修改呢?? 我試過%c 是空白的~~~請大大告訴我正確的寫法吧 囧 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.124.44.61 ※ 編輯: muah 來自: 140.124.44.61 (06/14 01:28)

06/14 09:53, , 1F
img->imageData[img->nChannels*(y*img->width+x)+chn]
06/14 09:53, 1F

06/14 09:55, , 2F
chn的定義:彩色2-R,1-G,0-B 灰階0
06/14 09:55, 2F

06/14 09:57, , 3F
推薦一個網誌,Google打"昨日",那位仁兄整理的非常好
06/14 09:57, 3F

06/14 21:17, , 4F
我有看他的網誌 不過我用你的寫法寫好像也一樣a =.=
06/14 21:17, 4F

06/14 21:20, , 5F
是宣告成int來抓嗎? 還是要用uchar呢?
06/14 21:20, 5F

06/14 22:40, , 6F
解決了 把Scalar1抓到的值轉成int 就可以讀出來了 囧
06/14 22:40, 6F
文章代碼(AID): #1ACzOEzf (C_and_CPP)
文章代碼(AID): #1ACzOEzf (C_and_CPP)