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

news2025/7/15 17:31:03

导语

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)主程序

import cv2

def process(image):
  #面积阈值
    min_area=100
    hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
    hsv = cv2.meianBlur(hsv, 5)
    mask = cv2.inRange(hsv, (11, 43, 46), (25, 255, 255))
    line = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5), (-1, -1))
    mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, line)
    cv2.imshow("mask",mask)


    contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    font = cv2.FONT_HERSHEY_IMPLEX
    for c in range(len(contours)):
        area = cv2.contourArea(contours[c])
        if area > min_area:
        # 绘制
            x, y, w, h = cv2.boundingRect(contours[c])
            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)
    return image


image=cv2.imread("c1.jpeg")
result = process(image)
cv2.imshow("result", result)
cv2.waitKey(0)
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 |已有文章汇总 | 持续更新,直接看这篇就够了

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/9022.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

redis(二)

一、短信登录 1.1导入黑马点评项目 导入黑马点评项目 首先,导入课前资料提供的SQL文件 其中的表有: tb_user:用户表tb_user_info:用户详情表tb_shop:商户信息表tb_shop_type:商户类型表tb_blog&#xf…

Golang入门(1)—— helloworld 初体验

没有多少雄心壮志,就是想在B站上跟一个视频,写一个helloworld 。 还是老配方,还是IDEA,简单的下载了一个go插件之后,就可以new go文件了。然后根据提示下载了一个最新的go版本,设置好环境变量。写了如下&am…

Redis事务相关源码探究

文章目录Redis事务源码解读1、MULTI 声明事务2、命令入队3、EXEC 执行事务4、WATCH 监听变量Redis事务源码解读 源码地址:https://github.com/redis/redis/tree/7.0/src 从源码来简单分析下 Redis 中事务的实现过程 1、MULTI 声明事务 Redis 中使用 MULTI 命令来…

Ubuntu18.04 安装完成后的开发配置

Ubuntu18.04 安装完成后的开发配置1 终端工具2 屏幕录制工具3 屏幕截图工具4 向日葵远程操作与开机自启动设置5 MarkDown笔记工具6 ROS 机器人操作系统安装7 编程开发工具8 机器人仿真环境Gazebo 安装Webots 安装CoppeliaSim 安装Mujuco 安装Pybullet 安装测试平台:…

【c#】前后端分离练习小项目学习笔记----纯干货

c#实现前端页面CRUD结果图涉及到的技术设计流程代码展示总结结果图 涉及到的技术 1、HttpClient请求网络 2、webapi接口用法 3、sqlsugar数据库使用 4、Json序列化、反序列化 设计流程 刚开始做这个小项目,很懵。按照平常中项目的写法,就是先配置好数据…

模式识别与机器学习(更新中)

模式识别与机器学习 使用的教材,PPT为1 公式推导部分直接去看白板推导2,不管是书上还是ppt都写的极其模糊 先说重点: 贝叶斯算概率参数估计 第二讲 贝叶斯学习基础 贝叶斯公式 先验概率是非条件概率 似然概率是给定变量的条件下观测变…

贤鱼的刷题日常--P1665 正方形计数--题目详解

🏆今日学习目标: 🍀学习了解–P1665 正方形计数 ✅创作者:贤鱼 ⏰预计时间:5分钟 🎉个人主页:贤鱼的个人主页 🔥专栏系列:c 🍁贤鱼的个人社区,欢迎…

基于matlab的瑞利衰落信道建模和仿真

目录 1.算法概述 2.仿真效果预览 3.核心MATLAB预览 4.完整MATLAB程序 1.算法概述 无线信道的小尺度衰弱特征可以分为三大类: 一类是由于多径传播导致短时间内幅度衰落; 一类是由于多径的时延扩展引起时间色散导致的信道衰弱; 一类是由于…

点成分享 | 微流控技术集成系统的应用

一、背景 微流控技术是指把化学和生物等领域中涉及的样品制备、反应、分离、检测、细胞培养、分选、裂解等基本操作单元集成到一块几平方厘米甚至更小的芯片上,由微通道形成网络,以可控流体贯穿整个系统,用以实现常规化学、生物、材料、光学…

SAP UI5 SmartTable 控件的使用介绍试读版

本文来自笔者 SAP 开发技术交流知识星球内一位朋友的提问: smartfilter bar 有个输入框Cost Element绑定了cds实现value help 请问其对应的suggestion功能是通过cds的注解实现的嘛? 要回答这个问题,我们必须首先掌握 SAP UI5 SmartTable 控件…

软考应该如何备考?

首先应该选择软考的科目,软考科目众多,计算机软件资格考试设置了27个专业资格,涵盖5个专业领域, 3个级别层次(初级、中级、高级)。 首先软考报名是不限学历,经验,资历的,…

cpu设计和实现(iverilog工具)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 编写verilog的工具不少。大家熟知的modelsim、quartus和vivado都可以用来编写的。前者主要是用来仿真,quartus主要用于altera芯片&…

伪元素和伪类的概念和区别

目录 伪类 伪元素 区别: 对于区别的解释: 伪类 这是菜鸟教程下方的一个笔记,看着多但是干货满满。 伪类选择元素基于的是当前元素处于的状态,或者说元素当前所具有的特性,而不是元素的id、class、属性等静态的标志。…

小程序获取不到用户头像和昵称返回微信用户问题解决,即小程序授权获取用户头像规则调整的最新解决方案

最近好多同学在学习石头哥小程序课程的时候,遇到了下面这样的问题,在小程序授权获取用户头像和昵称时,获取到的是下面这样的。 到底是什么原因导致的呢,去小程序官方文档一看,又是官方改规则了。 点进去一看&#x…

超详细!linux系统nlg-eval安装指南

前言:最近在做文本生成的任务,需要用到bleu等评价指标,看到其他研究工作中都在用nlg-eval这个github库,就想把它拿过来用,然而安装过程并不是一帆风顺的,谨以此篇博客记录之,为后来者提供一些经…

【菜菜的sklearn课堂笔记】逻辑回归与评分卡-重要参数penalty C

视频作者:菜菜TsaiTsai 链接:【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibili 正则化是用来防止模型过拟合的过程,常用的有L1正则化和L2正则化两种选项。这个增加的范式,被称为“正则项”,也…

11个开源测试自动化框架,如何选?

以下为作者观点: 如果你正在考虑建立你自己的测试自动化框架,请再想一想。在大多数情况下,你最好可以考虑一个或多个可用的开源选项。 这是因为,一般来说,框架是一套可以跨团队使用的最佳实践、假设、通用工具和库。…

操作符详解(C语言)

算术操作符(运算符): - * / % 在算术运算符中, - * 跟我们数学中的运算是一样的 在这里主要说一下 / 跟 % 这两个操作符 1、/ (除法) 在除法运算中,若除号两边的操作数都为整型,则结果…

布隆过滤器(Bloom Filter)

[TOC](布隆过滤器(Bloom Filter)) (1)什么是布隆过滤器 (1)布隆过滤器的简单介绍 布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以…

Python中的print()

本专栏为学习B站杨淑娟老师视频所记,仅做个人笔记使用😋😋😋 👉杨淑娟老师视频课👈 Python 职位方向 一、chapter1 1.使用print函数进行简单的输出 a100 # 变量a,值为100 b50 # 变量b,值为50print(90) …