本项目旨在运用Python语言分析和阐述计算机视觉技术中的目标检测在农作物病虫害方面的应用。具体而言,我们将运用Python语言运行并得出目标叶面中已遭受病虫害的面积,然后分析是否需要进行农药喷洒等防治病虫害的进一步肆虐,进而帮助农名伯伯更好地管理农作物,减少损失、增加产量……
首先,寻找检测目标:这里我们针对一片部分遭受病虫害的叶片进行检测处理
对叶片分析处理用到python语言及部分第三方库
在这里:Python环境:3.8.2
python编译器:JetBrainsPyCharm2018.1.2x64
第三方库:OpenCV、ilmutils、easygui、numpy、PIL等
导入用到的所有库
importcv2importimutilsimporteasyguifromPILimportImage,ImageDraw,ImageFontimportnumpyasnp事先将有病虫害的叶片部分做画图处理(涂成白色)背景图
导入图片并做黑白处理
对其做相同处理
当然,这里我们可以做一下边缘检测进一步确认我们想要的检测目标区域
#画轮廓,存储要识别的像素值的位置,记录在distinguishLeaf数组中foriinrange(x):forjinrange(y):ifany(originalPicture[i,j]==[255,255,255]):#颜色为白色的时候,占位distinguishLeaf.append([i,j])遍历上述得出的目标区域(已存入数组中,接下来也就是对数组进行操作)其中LeafArea是目标检测叶面的面积(多个像素点的累积值)greenLeafArea是目标叶面中绿色部分的面积(多个像素点的累积值)因为之前做过灰度处理(‘img’图像),故这里只需查看该像素点值是否为黑(即值是否等于0)
很易得出,非黑色部分为叶片绿色部分,因此一旦确定非黑,像素点个数+1
fortindistinguishLeaf:k,l=tLeafArea=LeafArea+1ifimg[k,l]!=0:#print(canny0[k,l])greenLeafArea+=1至此,成功了一大半,接下来要做的就是输出病虫害叶面占的比重值
此项目运用简单实例,介绍了计算机视觉技术在农业方面的应用,在帮助农民赠产脱贫方面起到了一定的作用。
这就是“互联网+智慧农业”的实例项目实现。
希望本文能对读者学习和理解计算机视觉技术有所帮助,并请读者批评指正!