opencv图像识别 红色

opencv图像识别 红色,第1张

直接对每个像素点判断即可,src是图像

IplImage* src

CvScalar s

for(int i = 0i <src->heighti++)

{

for(int j = 0j <src->widthj++)

{

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)//显示出来

另外你说的定位是什么意思,是不是说像车牌那样做一个矩形框框起来?我这做过一个车牌定位的,如果是的话我可以发给你!或者把代码贴出来

将字符定位,然后进行分割成一个一个的独立字符。可以准备一下字符样本,丢进opencv中的bp神经网络训练分类器,用训练好的分类器去对切分的字符进行识别。一个基本的思路,网上应该很多。

才开始练习写作,经验和文笔都是比较差的,在这里再次梳理一下从采集样本到图像识别结果的全部过程。

识别扑克牌:识别字符和和花色,这里没有考虑大小王。

2.1.使用Opencv查找联通区域

2.2.把这些联通区域转换成矩形

2.3.通过矩形的大小,长宽,筛选出候选区

2.4.人工分类,分成正样本和负样本

3.1 归一化

在计算特征之前,必须保证所有的样本是一样大小,这样可以得到的特征纬度是一样的,这个过程可以在采集样本的时候做,就是把所有样本resize成一样大小的图片,也可以在在计算特征的时候,先resize成一样的大小再计算特征。

3.2 特征化

把所有的样本都计算成特征值,等待传入AI引擎

3.3 识别

把所有的候选区先resize成归一化大小,再计算出特征,然后应用到特征引擎识别。

注意:

1.本例使用特征算法是是HOG特征,这里没有细讲,感兴趣的同学自动搜索学习。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8110724.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存