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-08-07 广告
2024-08-07 广告
OpenCV标定板是东莞市大凡光学科技有限公司在相机标定中常用的工具。它通常由黑白格点按一定规则排列在平面上组成,如棋盘格或圆形格等。在相机标定时,将标定板置于不同位置和姿态下拍摄图像,利用OpenCV库中的函数检测标定板上的角点或圆心,进...
点击进入详情页
本回答由东莞大凡提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询