- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Opencv2.4.9源码分析——Cascade Classification(三)
Opencv2.4.9源码分析——Cascade Classification(三)
下面我们以车牌识别为例,具体讲解OpenCV的级联分类器的用法。在这里我们只对蓝底白字的普通车牌进行识别判断,对于其他车牌不在考虑范围内。而且车牌是正面照,略微倾斜可以,倾斜程度太大也是不在识别范围内的。
我们通过不同渠道共收集了1545幅符合要求的带有车牌图像的照片(很遗憾,我只能得到这么多车牌照片,如果能再多一些就更好了!),通过ACDSee软件手工把车牌图像从照片中剪切出来,并统一保存为jpg格式。为便于后续处理,我们把文件名按照数字顺序命名,如图8所示。然后我们把这些车牌图像保存到pos文件夹内。
图8 蓝底白字车牌图像
需要注意的是,在这里我们没有必要把车牌图像缩放成统一的尺寸(即正样本图像的大小),更没有必要把它们转换成灰度图像,这些工作完全可以由系统完成。我们只需要告诉系统车牌图像文件、车牌的位置,以及车牌的尺寸大小即可。
为了高效的完成上述工作,我们编写了以下代码:
[cpp] view plain copy 在CODE上查看代码片派生到我的代码片
#include opencv2/core/core.hpp
#include opencv2/highgui/highgui.hpp
#include opencv2/imgproc/imgproc.hpp
#include iostream
#include fstream
#include string
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
ofstream postxt(pos.txt,ios::out); //创建pox.txt文件
if ( !postxt.is_open() )
{
coutcan not creat pos txt file!;
return false;
}
//N表示车牌图像的总数,c表示最终可以利用的车牌样本图像的数量
int N = 1545, c = 0;
int width, height, i;
String filename;
Mat posimage;
for(i=0;iN;i++) //遍历所有车牌图像
{
filename = to_string(i) + .jpg; //得到当前车牌图像的文件名
posimage = imread(pos\\ + filename); //打开当前车牌图像
if ( posimage.empty() )
{
coutcan not open + filename + file!endl;
continue;
}
width = posimage.size().width; //当前车牌图像的宽
height = posimage.size().height; //当前车牌图像的高
//如果当前车牌图像的宽小于60,或高小于20,则剔除该车牌图像
if(width 60 || height 20)
{
coutfilename + too small!endl;
continue;
}
//把当前车牌图像的信息写入pos.txt文件内
postxtpos/ + filename + 1 0 0 + to_string(width) + + to_string(height)endl;
c++; //累计
}
coutc; //终端输出c值
postxt.close(); //关闭pos.txt文件
return 0;
}
执行完该程序后,在终端输出得到的c值为1390,这说明有155(1545-1390)个车牌图像由于尺寸过小而被剔除。另外,在当前目录下我们还得到了pos.txt文件,该文件正是系统所需要
文档评论(0)