小言_互联网的博客

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

208人阅读  评论(0)

导语

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 |已有文章汇总 | 持续更新,直接看这篇就够了

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


转载:https://blog.csdn.net/weixin_55822277/article/details/127880793
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场