opencv图像识别 红色
需要编写一个opencv的程序,能够不断采集摄像头的图像,计算图像中红色(或接近红色)区域的大小,如占整个图像一定比例以上,则输出1,否则输出0...
需要编写一个opencv的程序,能够不断采集摄像头的图像,计算图像中红色(或接近红色)区域的大小,如占整个图像一定比例以上,则输出1,否则输出0
展开
1个回答
推荐于2016-06-18 · 知道合伙人互联网行家
关注
展开全部
直接对每个像素点判断即可,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("imagequot;,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("imagequot;,src); //显示出来
另外你说的定位是什么意思,是不是说像车牌那样做一个矩形框框起来?我这做过一个车牌定位的,如果是的话我可以发给你!或者把代码贴出来
追问
谢谢 不过 我要的是 1 和0 的结果输出
苏州千视通视觉科技股份有限公司_
2024-11-04 广告
2024-11-04 广告
千视通是国内第一梯队推出多模态AI大模型网关和边缘大模型一体机产品方案的领先AI企业。 拥有行业领先的多模态视觉语言大模型技术,践行“Make high-quality AI quickly”理念,平台基于多模态预训练,支持用户自定义算法可...
点击进入详情页
本回答由苏州千视通视觉科技股份有限公司_提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询