>>> 星瞳科技|OpenMV中国官方网站 <<<

>>> 星瞳科技店铺地址|OpenMV中国官方代理,全球九大代理商之一 <<<

>>> OpenMV3 Cam M7 官方高配版上市啦~戳我戳我戳我~ <<<

>>> 星瞳科技-OpenMV中文教程网 <<<

今天我们讲一下如何用openmv进行图像处理的模式匹配。
opemv是自带模式匹配例程的,用的是ncc算法,可以进行形状识别以及各种模板匹配。

注意,由于我们的模板图片大小要超过openmv内置的flash,所以我们需要插上sd卡后进行下列步骤。(注意先插sd卡再上电哦)
而且此模板匹配只能用于1.6及以上版本的固件哦,否则运行时会提示 “can not find SEARCH_EX”哦

首先,我们需要创建或导入一个模板,注意这个模板必须得是pgm格式的,而且大小有限制,不能超过openmv的像素大小。
我们可以直接从openmv里面截取一个模板图像,可以先运行helloworld.py例程,让frambuffer显示出图像,然后进行截取。

选择 save image selection to pc,注意从openmv里面直接截取保存的图片是bmp格式的,我们需要把它转换成pgm格式。可以在这个网站进行在线转换https://convertio.co/zh/bmp-pgm/

然后,我们将转换完的pgm模板保存到sd卡中(这个sd卡中一共有8个模板,上图的模板存为了ball0.pgm)


然后我们打开模板匹配的例程


把第28行的模板文件名template.pgm改成刚刚的ball0.pgm


然后直接运行就可以啦!

这个是模板匹配函数find_template的用法:


r = img.find_template(template, 0,7, roi=(10,0,80,60), step=4, search=SEARCH_EX)
threshold中的0.7是相似度阈值,roi是进行匹配的区域(左上顶点为(10,0),长80宽60的矩形),注意roi的大小要比模板图片大,比frambuffer小。

注意这个模板匹配用的是ncc算法,只能匹配出与模板大小相似的区域哦,如果要匹配不同大小的图片,需要保存多个不同大小的模板哦。