作业帮 > 综合 > 作业

用Opencv,区域颜色怎么提取求解答

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/08/23 14:41:16
用Opencv,区域颜色怎么提取求解答
火车指示灯,有红黄两色
抓拍的图片中指示灯位置固定
------解决方案--------------------------------------------------------
判断红色图片
IplImage*pImg_test=cvLoadImage("red7.jpg",1);;intr,g,b;
intintRedCount=0;intintS=0;
for(intx=0;x<pImg_test-width;x++){
for(inty=0;y<pImg_test-height;y++){
r=CV_IMAGE_ELEM(pImg_test,uchar,y,x*3+2);
g=CV_IMAGE_ELEM(pImg_test,uchar,y,x*3+1);
b=CV_IMAGE_ELEM(pImg_test,uchar,y,x*3);
if((r=210)&&(130g)&&(g110)&&(150b)&&(b130)){
intRedCount++;}}}
if(intRedCount=5){
AfxMessageBox("r==255,现在是红色信号灯\n");}
这个方法得到的rgb值是不对的,如果导入进一个绿色图片,结果rgb值还是一样的,这就区分不出来了这个
r=CV_IMAGE_ELEM(pImg_test,uchar,y,x*3+2);
g=CV_IMAGE_ELEM(pImg_test,uchar,y,x*3+1);
b=CV_IMAGE_ELEM(pImg_test,uchar,y,x*3);
------解决方案--------------------------------------------------------
cvGet2D取得的也是RGB的.
你知道指示灯的位置,并且那个区域也很确定的话,
你就取尽量大的不超过灯的范围的像素点,然后统计一下颜色平均值之类的,
和你设定的黄色还有红色的对比一下.