当前位置: 首页 > news >正文

python基于opencv实现数籽粒

  千粒重是一个重要的农艺性状,通过对其的测量和研究,我们可以更好地理解作物的生长状况,优化农业生产,提高作物产量和品质。但数籽粒数目是一个很繁琐和痛苦的过程,我们现在用一个简单的python程序来数水稻籽粒。代码的大致流程如下:

  1. 对照片进行预处理,包括灰度化、二值化等操作,以便更好地识别籽粒。
  2. 使用轮廓检测算法来找到照片中的籽粒,并计算轮廓面积;
  3. 对轮廓面积进行判断,以便区分重叠的籽粒。
  4. 计算籽粒数目,将结果输出到屏幕上或保存到文件中。

具体代码如下:

1. 加载需要的包

import cv2
from matplotlib import pyplot as plt
import numpy as np
from PIL import Image, ImageDraw, ImageFont

2. 导入图片并展示

img = cv2.imread('pic2.jpg',0)
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 显示图像
plt.imshow(img_rgb)
plt.show()

在这里插入图片描述

3. 轮廓检测算法来找到照片中的籽粒

ret, thresh = cv2.threshold(img, 180, 255, cv2.THRESH_BINARY)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
area = np.zeros(len(contours))
for i in np.arange(0, len(contours)):area[i] = cv2.contourArea(contours[i])

4. 对轮廓面积进行判断,以便区分重叠的籽粒

med = np.median(area)
j = 0
i = 0
a = area/med
draw = Image.fromarray(img)
for c in contours:if round(a[j]) == 1:   i = i+1draw1 = ImageDraw.Draw(draw)font = ImageFont.truetype('arial.ttf', 30)draw1.text(tuple(c[0][0]), str(i), fill = 'black', font = font)if round(a[j]) > 1:   i = i+round(a[j])draw1 = ImageDraw.Draw(draw)font = ImageFont.truetype('arial.ttf', 30)draw1.text(tuple(c[0][0]), str(i+1)+"~"+str(i+round(a[j])), fill = 'black', font = font)j = j + 1
print("籽粒数目:", i)

5. 展示标记情况

img_rgb = cv2.cvtColor(np.array(draw), cv2.COLOR_BGR2RGB)
# 显示图像
plt.imshow(img_rgb)
plt.savefig("rice.pdf")
plt.show()

在这里插入图片描述

http://www.lryc.cn/news/334569.html

相关文章:

  • OpenCV图像处理——基于OpenCV的ORB算法实现目标追踪
  • 13.JavaWeb XML:构建结构化数据的重要工具
  • 鸿蒙OS实战开发:【多设备自适应服务卡片】
  • 深度学习基础之一:机器学习
  • Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之五 简单指定视频某片段重复播放效果
  • ARXML处理 - C#的解析代码(二)
  • 关于华为即将举行的鸿蒙春季沟通会的新闻报道
  • MySQL视图及如何导入导出
  • 文心一言上线声音定制功能;通义千问开源模型;openAI又侵权?
  • 课时89:流程控制_函数进阶_函数变量
  • Linux命令-dpkg-preconfigure命令(Debian Linux中软件包安装之前询问问题)
  • SEO优化艺术:精细化技巧揭示与搜索引擎推广全面战略解读
  • 《springcloud alibaba》 四 seata安装以及使用
  • -bash: cd: /etc/hadoop: 没有那个文件或目录
  • JVM字节码与类加载——字节码指令集与解析
  • 景芯2.5GHz A72训练营dummy添加(一)
  • React - 请你说一说setState是同步的还是异步的
  • 设计模式之命令模式(下)
  • 【opencv】示例-demhist.cpp 调整图像的亮度和对比度,并在GUI窗口中实时显示调整后的图像以及其直方图。...
  • 计算机网络---第三天
  • 怎么防止文件被拷贝,复制别人拷贝电脑文件
  • 流式密集视频字幕
  • 【教程】iOS Swift应用加固
  • 新型基础设施建设(新基建)
  • 蓝桥杯 第 9 场 小白入门赛 字符迁移
  • 泰迪智能科技人工智能应用工程师(中级)特训营
  • 【数据结构】考研真题攻克与重点知识点剖析 - 第 6 篇:图
  • java的基本数据类型
  • 0104练习与思考题-算法基础-算法导论第三版
  • 烤羊肉串引来的思考--命令模式