VS2010,如何取得一幅图像中某个像素值得快捷方法and将某一点像素值改为指定值

来源:互联网 发布:动态最优化基础 答案 编辑:程序博客网 时间:2024/06/06 01:06

1.取出图片中坐标(i,j)处的像数值

unsigned char getValue(IplImage* img, int x,int y,int channels)
{

if( (x > (img->height -1))|| (x<0) )
 return 0;
if( (y > (img->width -1))|| (y<0) )
 return 0;
if(channels > (img->nChannels) )
 return 0;

if(NULL != img->imageData)
{
return img->imageData[x * img->widthStep + y*img->nChannels + (channels - 1)];
}

}

注:getValue为某个子函数,在主函数中调用即可。

例:int main()

{

***************************

……………………………………………………………………………………

getValue(img, 1,1,1);//采用getValue来取出图片img的单通道坐标(1,1)处的值。……………………………………………………………………………………………………

}

2.将指定坐标位置的值付为指定值

int setValue(IplImage* img, int x,int y,int channels ,unsigned char value)
{

char* const pData = img->imageData;

if( (x > (img->height-1) )|| (x<0) )
return 0;

if( (y > (img->width -1) )|| (y<0) )
return 0;

if(channels > (img->nChannels) )
return 0;

if(NULL != img->imageData)
{
return pData[x * img->widthStep + y*img->nChannels + (channels - 1)] = value;

}

}

注:setValue为某个子函数,在主函数中调用即可。

例:int main()

{

***************************

……………………………………………………………………………………

setValue(img, 1,1,1,1);//采用setValue来把图片img的坐标(1,1)处的值改为1(第一通道)。……………………………………………………………………………………………………

}


0 0
原创粉丝点击