请用opencv+python,写一个识别草莓并描出轮廓的代码,并将带有一点点黄色的草莓标记为未成熟,全红的标记为成熟
时间: 2024-03-01 10:55:24 浏览: 141
好的,以下是识别草莓并描出轮廓的代码,并将带有一点点黄色的草莓标记为未成熟,全红的标记为成熟:
```python
import cv2
# 加载图像
img = cv2.imread("strawberry.jpg")
# 预处理图像
blur = cv2.GaussianBlur(img, (5, 5), 0)
hsv = cv2.cvtColor(blur, cv2.COLOR_BGR2HSV)
# 设定草莓颜色的范围
lower_red = cv2.inRange(hsv, (0, 100, 100), (10, 255, 255))
upper_red = cv2.inRange(hsv, (160, 100, 100), (179, 255, 255))
mask = cv2.bitwise_or(lower_red, upper_red)
# 查找轮廓
contours, hierarchy = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 描绘轮廓并标记成熟度
for cnt in contours:
area = cv2.contourArea(cnt)
x, y, w, h = cv2.boundingRect(cnt)
aspect_ratio = float(w) / h
if area > 1000:
if aspect_ratio > 0.8:
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.putText(img, "Ripe", (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)
else:
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 255), 2)
cv2.putText(img, "Unripe", (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 255), 2)
# 展示结果
cv2.imshow("original", img)
cv2.imshow("mask", mask)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
以上代码假设草莓成熟的标准是草莓的长宽比大于0.8,如果成熟的标准不同,需要相应地修改代码。
阅读全文