求用opencv识别红色区域 并定位的具体流程!!!
1个回答
展开全部
直接对每个像素点判断即可,src是图像
IplImage* src;
CvScalar s;
for(int i = 0;i < src->height;i++)
{
for(int j = 0;j < src->width;j++)
{
s = cvGet2D(src,i,j); // 获得像素值
if(s.val[0]<50&&s.val[1]<50&&s.val[2]>200)
//注意这里的012对应的是bgr,范围的意思是防止光线的明暗影响,可以适当放宽,另外你也可以选择其他的颜色空间,可以直接取消明暗影响,比如HSV
{
s.val[0]=0;
s.val[1]=0;
s.val[2]=255;
} //如果满足条件就设置为红色
else
{
s.val[0]=0;
s.val[1]=0;
s.val[2]=0;
} //如果不满足就设置为黑色
cvSet2D(src,i,j,s); //设置像素
}
}
cvNamedWindow( "image", 1 );
cvShowImage("image",src); //显示出来
另外你说的定位是什么意思,是不是说像车牌那样做一个矩形框框起来?我这做过一个车牌定位的,如果是的话我可以发给你!或者把代码贴出来
IplImage* src;
CvScalar s;
for(int i = 0;i < src->height;i++)
{
for(int j = 0;j < src->width;j++)
{
s = cvGet2D(src,i,j); // 获得像素值
if(s.val[0]<50&&s.val[1]<50&&s.val[2]>200)
//注意这里的012对应的是bgr,范围的意思是防止光线的明暗影响,可以适当放宽,另外你也可以选择其他的颜色空间,可以直接取消明暗影响,比如HSV
{
s.val[0]=0;
s.val[1]=0;
s.val[2]=255;
} //如果满足条件就设置为红色
else
{
s.val[0]=0;
s.val[1]=0;
s.val[2]=0;
} //如果不满足就设置为黑色
cvSet2D(src,i,j,s); //设置像素
}
}
cvNamedWindow( "image", 1 );
cvShowImage("image",src); //显示出来
另外你说的定位是什么意思,是不是说像车牌那样做一个矩形框框起来?我这做过一个车牌定位的,如果是的话我可以发给你!或者把代码贴出来
更多追问追答
追问
要不要转到灰度图像啊! 不是要对它进行滤波和 腐蚀吗?这样子效果会更好!
如果想对它 进行 滤波和腐蚀的 该怎么做啊?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询