作者muah (想唱歌)
看板C_and_CPP
标题[问题] 请问opencv读pixel
时间Sun Jun 14 00:38:37 2009
请问一下有用过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)
1F:推 jerohands:img->imageData[img->nChannels*(y*img->width+x)+chn] 06/14 09:53
2F:→ jerohands:chn的定义:彩色2-R,1-G,0-B 灰阶0 06/14 09:55
3F:→ jerohands:推荐一个网志,Google打"昨日",那位仁兄整理的非常好 06/14 09:57
4F:→ muah:我有看他的网志 不过我用你的写法写好像也一样a =.= 06/14 21:17
5F:→ muah:是宣告成int来抓吗? 还是要用uchar呢? 06/14 21:20
6F:→ muah:解决了 把Scalar1抓到的值转成int 就可以读出来了 囧 06/14 22:40