首页 > 其他 > 详细

提取某种颜色的像素点

时间:2015-03-26 23:34:50      阅读:297      评论:0      收藏:0      [点我收藏+]
// 洗刷掉某种颜色
void WashOffTheColor( IplImage* src )
{
	if ( src == NULL )  
    {  
        return ;  
    }  
      
    const int width     = src->width;  
    const int height    = src->height;  
    const int widthStep = src->widthStep;  
    const int channels  = src->nChannels;  
    uchar *data = (uchar *)src->imageData;  
    
	if ( channels != 3 )
	{
		return ;
	}

	uchar* bgr[3];
	for ( int row = 0; row < height; ++row )
	{
		for ( int col = 0; col < width; ++col )
		{
			for ( int cha = 0; cha < channels; ++cha )
			{
				bgr[cha] = &data[cha + col * channels + row * widthStep];
			}
			CvScalar rgb = CV_RGB(*bgr[2], *bgr[1], *bgr[0]);
			int r = rgb.val[2];
			int g = rgb.val[1];
			int b = rgb.val[0];

			*bgr[0] = 0;
			*bgr[1] = 0;
			*bgr[2] = 0;

			if ( (g + b < r && r > 200) ||
				(g + b < r && g < b) )
			{
				if ( g < r / 2 && b < r / 2 )
				{ // 红色的判断条件
					*bgr[0] = 255;
					*bgr[1] = 255;
					*bgr[2] = 255;
				}
	
			}
		}
	}
}

提取某种颜色的像素点

原文:http://blog.csdn.net/u011504498/article/details/44655865

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!