如何解决您如何在python中计算米上的重叠谷物?
鉴于提供的图像,您将如何使用python来计数米粒。如您所见,它们是重叠的。
非常感谢您的帮助。
我在下面尝试了此代码,但失败了。我尝试过:I = cv2.imread(“ name_of_file.jpg”)
from sys import argv; from PIL import Image
# Init
I = Image.open(argv[1]); W,H = I.size; A = W * H
D = [sum(c) for c in I.getdata()]
Bh = [0] * H; Ch = [0] * H
Bv = [0] * W; Cv = [0] * W
# Flood-fill
Background = 3 * 255 + 1; S = [0]
while S:
i = S.pop(); c = D[i]
if c != Background:
D[i] = Background
Bh[i / W] += c; Ch[i / W] += 1
Bv[i % W] += c; Cv[i % W] += 1
S += [(i + o) % A for o in [1,-1,W,-W] if abs(D[(i + o) % A] - c) < 10]
# Eliminate "trapped" areas
for i in xrange(H): Bh[i] /= float(max(Ch[i],1))
for i in xrange(W): Bv[i] /= float(max(Cv[i],1))
for i in xrange(A):
a = (Bh[i / W] + Bv[i % W]) / 2
if D[i] >= a: D[i] = Background
# Estimate grain count
Foreground = -1; avg_grain_area = 3038.38; grain_count = 0
for i in xrange(A):
if Foreground < D[i] < Background:
S = [i]; area = 0
while S:
j = S.pop() % A
if Foreground < D[j] < Background:
D[j] = Foreground; area += 1
S += [j - 1,j + 1,j - W,j + W]
grain_count += int(round(area / avg_grain_area))
# Output
print grain_count
解决方法
这是图像分析的一个相当复杂的问题。您可能会训练一个神经网络来计算米粒,但这并不是那么容易。您将需要许多已经计算了米粒的图片来训练网络。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。