pycharm水果识别opencv
时间: 2023-12-10 18:36:02 浏览: 122
基于Pycharm编程平台与opencv开源库实现水果种类的简单识别与计数,可以按照以下步骤进行:
1.导入必要的库和模块,包括cv2、numpy等。
2.读取图片,可以使用cv2.imread()函数。
3.将图片转换到HSV颜色空间,可以使用cv2.cvtColor()函数。
4.进行中值滤波去除噪声,可以使用cv2.medianBlur()函数。
5.根据颜色范围创建掩膜,可以使用cv2.inRange()函数。
6.进行开运算,可以使用cv2.morphologyEx()函数。
7.使用cv2.findContours()函数查找轮廓。
8.遍历轮廓,使用cv2.contourArea()函数计算轮廓面积。
9.根据轮廓面积判断水果种类,并进行计数。
下面是一个简单的示例代码:
```python
import cv2
import numpy as np
# 读取图片
img = cv2.imread('fruit.jpg')
# 转换到HSV颜色空间
hsv = cv2.cvtColor(img, 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)
# 查找轮廓
contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 计数器
count = {'apple': 0, 'banana': 0, 'lemon': 0, 'kiwi': 0, 'grape': 0, 'orange': 0}
# 遍历轮廓
for c in contours:
# 计算轮廓面积
area = cv2.contourArea(c)
# 根据面积判断水果种类
if area < 100:
continue
elif area < 1000:
count['lemon'] += 1
elif area < 2000:
count['kiwi'] += 1
elif area < 3000:
count['grape'] += 1
elif area < 4000:
count['orange'] += 1
else:
count['apple'] += 1
# 输出计数结果
print(count)
```
阅读全文