• 【Opencv实战】识别水果的软件叫什么?一款超好用的识别软件分享,一秒鉴定(真是活~久~见~啊)


    导语

    Hello,大家好呀!我是木木子吖~

    一个集美貌幽默风趣善良可爱并努力码代码的程序媛一枚。

    听说关注我的人会一夜暴富发大财哦——不信你试试!

    所有文章完整的素材+源码都在👇👇

    粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。

    大家是不是发现现在的水果五花八门,特别是我们平常去超市或者水果店的时候,经常会

    看到好多水果长相差不多,但是价格却相差十万八千里。

    总是搞不清楚这些水果有什么区别,从而导致我们经常被不良小贩坑骗!这个时候有些人会利

    用一些软件来识别水果的名称,今天小编教你自己用代码编写一款专属的水果识别小程序哦~

    ——小故事🍭

    前几天木木子我逛超市,想买点水果走一下亲戚。进了超市一脸懵逼,贼多多的一摊摊水果不

    认识。回家赶紧一通搜罗,熬夜写了一晚代码整理了这些常见水果知识,以绝后患😀.

    正文

    一、奇奇怪怪的水果

    这些奇奇怪怪的水果都是从哪里冒出来的,涨姿势啊!!看看你认识几个呢?

    1)奇奇怪怪的水果——荔枝vs黄皮

    (图2 )黄皮和龙眼(图1)确实非常相似。加之两者的产区都是两广、海南、云南等最南的省

    份,所以在生活里被错认是相当容易的事。

    这种水果叫做黄皮,或者黄皮子。(图2)

    不是黄皮子坟那个黄皮子,那是动物。估计我们的多半读者也没吃过这家伙,没吃过不要紧,

    我们来说一说。博物嘛,格物致知,看就当吃。

    2)奇奇怪怪的水果——菠萝vs凤梨

    这两个水果我开始是傻傻分不清楚。现经查证菠萝就是凤梨,凤梨就是菠萝。只不过是台湾人

    管菠萝叫凤梨。两者是同一个东西。我就简单的假装不知道凤梨的存在,叫菠萝就行了,毕竟

    两岸始终是要统一的嘛。

    3)奇奇怪怪的水果——蛇皮果

    果如其名,果皮很像蛇皮,比较锋利,剥皮时小心割手。果味爽脆,味道独特,似菠萝,又似

    榴莲。

    其实生活中还有好多好多不认识的水果,马上进入今天的正题吧~

    二、代码实战

    1)环境安装

    小编使用的环境:Python3、Pycharm社区版、opencv模块,部分自带就不一一 展示啦。 

     模块安装:pip install -i https://pypi.douban.com/simple/+模块名 

    素材(图片) 可以自己随机找几张就可以需要识别的水果图即可啦。

    2)思路讲解

     我们基于简单的opencv的阈值分割,通过这个阈值分割,我们能把我们需要识别的物体在二

    值图里面变成白色,其余的变成黑色。然后对我们分割出来的物体部分提取轮廓,算出覆盖轮

    廓的最小矩形,然后画出这个矩形框,并且表上我们物体的名字。

    3)测试图片

    首先我们读入一张橙子的图片,因为opencv默认读入的图片是bgr的形式,我们用的是hsv的颜色

    阈值,因此我们要将图片转换到hsv。然后经过一个中值滤波去除噪声,再经过一个开运算。

    image=cv2.imread("c4.jpeg")hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)hsv = cv2.medianBlur(hsv, 5)mask = cv2.inRange(hsv, (11, 43, 46), (25, 255, 255))line = cv2.getStructuringElement(cv2.MORPH_RECT, (15, 15), (-1, -1))mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, line)
    

    其中cv2.inRange会将图片中hsv值在(11, 43, 46),和(25, 255, 255)中间的值变成白色,不在中

    间的值变成黑色。最后咱们处理好的二值图如下:

    然后就是提取轮廓,求出最大轮廓,这个最大轮廓也就是我们的橙子

    contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)    index = -1    max = 0    font = cv2.FONT_HERSHEY_SIMPLEX    for c in range(len(contours)):        area = cv2.contourArea(contours[c])        if area > max:            max = area            index = c

    随后就是对这个橙子的轮廓求外接矩形,然后把这个矩形画出来,并且再对应的位置上标上orange。

        if index >= 0:        x, y, w, h = cv2.boundingRect(contours[index])        cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)        cv2.putText(image,"orange",(x, y), font, 1.2, (0, 0, 255), 2)

    4)主程序

    1. import cv2
    2. def process(image):
    3. #面积阈值
    4. min_area=100
    5. hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
    6. hsv = cv2.meianBlur(hsv, 5)
    7. mask = cv2.inRange(hsv, (11, 43, 46), (25, 255, 255))
    8. line = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5), (-1, -1))
    9. mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, line)
    10. cv2.imshow("mask",mask)
    11. contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    12. font = cv2.FONT_HERSHEY_IMPLEX
    13. for c in range(len(contours)):
    14. area = cv2.contourArea(contours[c])
    15. if area > min_area:
    16. # 绘制
    17. x, y, w, h = cv2.boundingRect(contours[c])
    18. cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
    19. cv2.putText(image,"orange",(x, y), font, 1.2, (0, 0, 255), 2)
    20. return image
    21. image=cv2.imread("c1.jpeg")
    22. result = process(image)
    23. cv2.imshow("result", result)
    24. cv2.waitKey(0)
    25. cv2.destroyAllWindows()

    三、效果展示

    1)橘子orange

    2)香蕉banana

    3)苹果apple

    总结

    世界这么大,快来都看看!不然连水果都不认识啦!哈哈哈——安啦!

    这款水果识别小工具到这里就正式结束啦,记得偷偷点个关注哦,我保证发现你。嘿嘿

    我可真是个小机灵鬼儿。想要资料的,老规矩撒自己来拿 免费滴哈👇

    🎯完整的免费源码领取处:找我吖!文末公众hao可自行领取,滴滴我也可!

    🔨推荐往期文章——

    项目3.1    抠图神器

    【爆赞】这款Python小程序自动抠图只需5秒,秒杀PS手动抠图?

    项目2.8  黑白上色技巧

    OpenCv之黑白上色小技巧,奥黛丽赫本神颜,超惊艳滴~

    项目1.1  动漫化人物

    【突破次元壁】谁说二次元离我们遥远?Python特效火遍全网,关键技术原来是它。

    项目1.2  颜值打分系统

    Python小测试 2021最新男女颜值打分小系统标准出炉,看哭无数人...

    🎄文章汇总——

    汇总合集  Python—2022 |已有文章汇总 | 持续更新,直接看这篇就够了

    (更多内容+源码都在✨文章汇总哦!!欢迎阅读喜欢的文章🎉~)

  • 相关阅读:
    安装HBase集群
    Qml的知识点
    考Oracle OCM 的作用
    数据结构学习笔记 - 带权并查集(食物链题解)
    Unity3D学习笔记12——渲染纹理
    删除 KubeSphere 中一直卡在 Terminating 的 Namespace
    从零开始手写一个Transformer
    如何让你的工作能力比别人强
    权威认可 | Smartbi为何屡获市场认可,多个权威报告给出答案
    7.手机登陆功能开发
  • 原文地址:https://blog.csdn.net/weixin_55822277/article/details/127880793