导语
Hello,大家好呀!我是木木子吖~
一个集美貌幽默风趣善良可爱并努力码代码的程序媛一枚。
听说关注我的人会一夜暴富发大财哦——不信你试试!
所有文章完整的素材+源码都在👇👇
大家是不是发现现在的水果五花八门,特别是我们平常去超市或者水果店的时候,经常会
看到好多水果长相差不多,但是价格却相差十万八千里。
总是搞不清楚这些水果有什么区别,从而导致我们经常被不良小贩坑骗!这个时候有些人会利
用一些软件来识别水果的名称,今天小编教你自己用代码编写一款专属的水果识别小程序哦~
——小故事🍭
前几天木木子我逛超市,想买点水果走一下亲戚。进了超市一脸懵逼,贼多多的一摊摊水果不
认识。回家赶紧一通搜罗,熬夜写了一晚代码整理了这些常见水果知识,以绝后患😀.
正文
一、奇奇怪怪的水果
这些奇奇怪怪的水果都是从哪里冒出来的,涨姿势啊!!看看你认识几个呢?
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 黑白上色技巧
项目1.1 动漫化人物
【突破次元壁】谁说二次元离我们遥远?Python特效火遍全网,关键技术原来是它。
项目1.2 颜值打分系统
Python小测试 2021最新男女颜值打分小系统标准出炉,看哭无数人...
🎄文章汇总——
汇总合集 Python—2022 |已有文章汇总 | 持续更新,直接看这篇就够了
(更多内容+源码都在✨文章汇总哦!!欢迎阅读喜欢的文章🎉~)
转载:https://blog.csdn.net/weixin_55822277/article/details/127880793