写一份基于Otsu阈值分割的鱼苗计数python代码
时间: 2023-12-15 15:47:45 浏览: 99
以下是基于Otsu阈值分割的鱼苗计数Python代码示例:
```python
import cv2
# 读取图像
img = cv2.imread('fish.jpg')
# 转为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Otsu阈值分割
ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
# 进行形态学操作,去除噪声
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
thresh = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel)
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
cv2.drawContours(img, contours, -1, (0, 0, 255), 2)
# 计数
count = len(contours)
print("鱼苗数量为:", count)
# 显示图像
cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
该代码首先读取一张鱼苗图片,然后将其转为灰度图像,并进行Otsu阈值分割。接着进行形态学操作,去除噪声,然后查找轮廓并绘制出来。最后计算轮廓数量,即为鱼苗数量。最后显示出图像。
阅读全文