使用Python+opencv+k-means根据扫描图片计算叶片面积-续

本文分享了一个简化后的Python代码,使用OpenCV和阈值处理快速计算叶片面积。原始复杂代码压缩至十余行,结果显示与原方法相近,但阈值设置需考虑数据质量,对批量处理可能存在不确定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 、概述

之前写了一篇计算叶片面积的文章,后来想想其实没有那么复杂,直接二值化计算即可得到,原来的代码写了几十行,其实十余行就可以计算得到叶片面积了。

原文:使用Python+opencv+k-means根据扫描图片计算叶片面积

使用相同的叶片图片进行计算,图片如下:

二、简洁代码

代码如下:

import cv2

img0 = cv2.imread(r'02.jpg', flags=1)
img0 = img0[1:, 1:, 0] #获取B通道图片,B通道更能区别叶片色彩;且将不必要部分截除,便于处理。
cv2.imshow("imagin0", img0)
cv2.waitKey()
cv2.destroyWindow("imagin0")
r, c = img0.shape
print(r,c)
leaves,background=0,0  #leaves为叶片像素 background为背景像素
for i in range(r):
    for j in range(c):
        if img0[i][j]>180:
            background+=1
        else:
            leaves+=1
a = leaves * 21.0*29.7 / (background+leaves) #原图实际大小为A4大小的情况下
print(leaves, background, a)
#计算结果  7013 4961        15886657 18904836 284.7968602813337

三、结果比较

原代码结果是:34791493 15551356 278.7859876320915 计算结果

两个结果分别是284.7968602813337和278.7859876320915 相差2.0% ,比较接近了。

四、存在问题

本文代码阈值设置问题需要提前预判测定,需要认为干预,比如我通过ps软件看了一下叶片和背景值的像素值判断的一个值,即文中的180,可能不具有普适性,需要根据数据的质量确定适用性了。如果用做批处理许多不同的照片,结果可能就会出现一些不确定性了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空中旋转篮球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值