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特征,这里没有细讲,感兴趣的同学自动搜索学习。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)