一、目的
对输入图像进行图像特征提取,并感受各种不同的特征对最终图像识别的影响。
二、原理
水果有位置、方向、周长、面积、矩形度、宽长比、球状性、圆形度、不变矩、偏心率等各种特征。对图像进行灰度化再经过二值化等处理可以得到图像中水果的轮廓,利用该轮廓可以求得各种特征,利用一些特征构造模型可以实现对水果种类的检测识别。
以下介绍python中使用opencv库进行图像处理的一些主要函数:
读入图像:cv2.imread(filepath,flags),显示图像:cv2.imshow(wname,img)
颜色空间转换:cv2.cvtColor(img,cv2.COLOR_X2Y)
二值化:cv2.threshold(src, thresh, maxval, type[, dst])
轮廓提取:cv2.findContours(contour,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
绘制轮廓:cv2.drawContours()
求取面积:cv2.contourArea(),求取周长:cv2.arcLength()
一些特征的计算过程如下:
矩形度:
,AO是该物体的面积,而AMER是其外接矩形的面积
球状性:
,ri为最大内接圆半径,rc为最小外接圆半径
圆形度:e=(4π 面积)/(周长 * 周长);
三、实现过程
1.数据集说明
数据集中包含苹果和香蕉两种水果,分别存放于对应的文件夹中
图1 部分数据集
2.提取特征
读入所有的水果图像,首先对它们做如下处理:转为灰度图像、二值化