手把手教你如何利用Python + opencv opencv实时识别指定(或自定义)物体.docx

手把手教你如何利用Python + opencv opencv实时识别指定(或自定义)物体.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

手把手教你如何利用Python+opencvopencv实时识别指定(或自定义)物体

一.引入

??opencv人脸识别大家应该都听说过,本篇目的是利用opencv从视频帧中识别指定的物体,并框出来,且可以保存截取到的物体图片,会将整个流程都讲一下,包括训练自己的分类器,使用训练好的分类器进行识别。这里以识别舌头为例。

二.?环境:

??1.?python3.6.3

??2.opencv?3.4.0

三.训练自己的分类器

1.注意点:训练集分为正样本,负样本,样本全部为灰度图片,正样本图片尺寸需要固定,一般40*40左右即可,大了电脑跑不动,负样本尺寸不固定,负样本数量要比正样本多才行,少了有问题。

图片批量缩小工具下载:链接:/s/1pMAp19p密码:vpp1

图片批量灰度处理:使用美图秀秀

2.正样本制作,使用美图秀秀将舌头的图片全部裁剪出来(尺寸一致为:40*40的),保存到一个文件夹pos中,当然可以先用大尺寸正方形框进行裁剪,然后再用图片缩小工具进行制定尺寸缩小。最后再用美图秀秀批量灰度化。

附上名字自动有序化Java代码:

Stringpath=C:\\Users\\Administrator\\Desktop\\pos\\;

Filef=newFile(path);

File[]files=f.listFiles();

for(Filefile:files){

i++;

file.renameTo(newFile(path+i+.+file.getName().split(\\.)[1]));

}

处理后得到如下所示图片:

3.负样本制作:如上操作类似,不过这里不要求尺寸一样,但是负样本图片中一定不要包含待识别的区域(如这里的:舌头)

如下所示:

4.生成样本资源记录文件:

a.正样本资源记录文件

新建pos文件夹,将正样本的灰度图拷贝进去

使用JAVA代码生成正样本资源记录文件:

Stringpath=E:\\tools\\python\\eclipse\\work\\pythonTest\\demo\\0202\\img\\train\\tongue\\pos\\;

Filetxtfile=newFile(path+pos.txt);

FileOutputStreamfos=newFileOutputStream(txtfile);

PrintWriterpw=newPrintWriter(fos,true);

Strings=;

File[]files=newFile(path).listFiles();

for(Filefile:files){

pw.println(pos/+file.getName()+1004040);

}

生成后删除最后一行的带有(pos.txt)的内容,让正样本资源记录文件内容如下类似所示:

(1004040)分别指代:数量?左上方的坐标位置(x,y)?右下方的坐标位置(x,y)

处理好后,将pos.txt移动到上一级文件夹

b.负样本资源记录文件

新建neg文件夹,将负样本的灰度图拷贝进去

使用JAVA代码生成负样本资源记录文件:

Stringpath=E:\\tools\\python\\eclipse\\work\\pythonTest\\demo\\0202\\img\\train\\tongue\\neg\\;

Filetxtfile=newFile(path+neg.txt);

FileOutputStreamfos=newFileOutputStream(txtfile);

PrintWriterpw=newPrintWriter(fos,true);

Strings=;

File[]files=newFile(path).listFiles();

for(Filefile:files){

pw.println(neg/+file.getName());

}

生成后删除最后一行的带有(neg.txt)的内容,让负样本资源记录文件内容如下类似所示:

处理好后,将negtxt移动到上一级文件夹

得到如图所示文件夹结构:

5.使用opencv提供的opencv_createsamples.exe程序生成样本vec文件,新建批处理文件:createsamples.bat

内容如下:

opencv_createsamples.exe-vecpos.ve

文档评论(0)

暗伤 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档