我用cvloadimage读取一副图像,该图像像素只有0和255两个值,但是我用((uchar*)(img->imageData + img->widthStep*y))[x]读取图像数据并进行加减运算时却会出现255-255=1的情况,非常奇怪,所以想请教一下是不是因为((uchar*)(img->imageData + img->widthStep*y))[x]的类型的问题

解决方案 »

  1.   

    附上部分代码img_temp是与img同样大小的初始值全为0的图像首先是一个条件赋值
    if ( (A>=2) & (A<=6) & (B==1) & (C==0) & (D==0) )
    {
    ((uchar*)(img_temp->imageData + img_temp->widthStep*x))[y]=((uchar*)(img->imageData + img->widthStep*x))[y];
    } 接着是相减运算
    for( x=0;x<=(H-1);x++)
        for( y=0;y<=(W-1);y++)
    {
    ((uchar*)(img->imageData + img->widthStep*x))[y]=((uchar*)(img->imageData + img->widthStep*x))[y]-((uchar*)(img_temp->imageData + img_temp->widthStep*x))[y];
    }
    就是这个时候,img中的imageData会出现一些像素值为1的点,很奇怪
      

  2.   


    if ( (A>=2) & (A<=6) & (B==1) & (C==0) & (D==0) )这是什么意思,与操作,是不是要改成if ( (A>=2) && (A<=6) && (B==1) && (C==0) && (D==0) )