我要做的事: 扫描一张只有黑色和白色的8位单通道的灰度图像,扫描从左上角开始,
将白色的点的坐标存储到向量中。 
采取的方法:  vector<CPoint>Array;
              IplImage *pImage=cvCreateImage(cvSize(a,b),8,1);
            for(int i=0;i<b;++i)
for(int j=0;j<a;++j)
{
if(Image_vectorized->imageData[i*img_width+j]='*')
                  { CPoint pt=CPoint(i,j);
                            Array.push_back(pt);
                          }
}
在IplImage 中 声明 imageData 是 char*类型,那么每一个像素点都对应一个字符,
 那么白色的像素点对应的是什么字符呢? 黑色的呢? 或者是否有其他的方法可以判别
哪些是白色的像素点?

解决方案 »

  1.   

      我使用 char tchar=pImage->imageData[]的形式去查看里面存放的字符到底是什么。
    在VC中调试时发现, 黑色像素对应的字符是:0 '' ,白色像素对应的字符是 -1 'y' (这边的y上面还有两点,此处无法打出)。 不知道代表什么意思?
      

  2.   

    如果这样,是对的,黑色的是0,显示的也就是0
    但是白色是 "-1" 其实就是十进制255,因为可能VC把它当做有符号的数在显示,所以内存中的16进制 “FF”,显示为-1了,其实就是十进制的255,呵呵。我不知道你怎么看显示的,如果用Hex格式的话,就可以看到了。
      

  3.   

    CvScalar s;
    s=cvGet2D(src,i,j);
    s.val[0]的值0对用黑色,255对应白色