用opencv跟踪皮带上的土豆,是最好的选择吗?

2024-10-01 22:41:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用某种机器学习来测量(直径)和计算传送带上的土豆。我已经开始使用opencv,并开始训练带有正片和负片图像的层叠,这是我捕获的短视频的打印屏幕:

potatoes on a belt

在这个框架中,它只能识别一些土豆,但我认为我可以添加更多的正面和负面图像,使更好的标识符。你知道吗

关于这些问题

  1. 你认为我说的对吗?

  2. 你知道我该怎么继续测量直径吗?

  3. 我该如何跟踪每一个土豆,使它只被计算一次?

(这是我用来识别土豆的代码)

import numpy as np
import cv2
pot_cascade = cv2.CascadeClassifier('cascade.xml')
cap = cv2.VideoCapture('potatoe_video.mp4')
while 1:
    ret, img = cap.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    potatoes = pot_cascade.detectMultiScale(gray, 5, 5)    
    for (x, y, w, h) in potatoes:
        cv2.rectangle(img, (x, y), (x + w, y + h), (255, 255, 0), 2)
    cv2.imshow('img', img)
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break

cap.release()
cv2.destroyAllWindows()

Tags: 图像import机器imgcv2opencvcascadecap
1条回答
网友
1楼 · 发布于 2024-10-01 22:41:12

Do you think that I'm on right track?

是的,也不是。机器学习绝对是解决土豆跟踪问题的正确工具,但到目前为止显示的结果并不是很好。还有很长的路要走。你知道吗

And any idea how I shall continue with measuring the diameter?

如果你只对测量土豆的平均直径感兴趣,那么这可能比跟踪单个土豆要容易得多。你知道吗

首先,您需要估计透视图(传送带相对于相机的位置),以便了解图像空间与传送带上真实空间的关系。什么可以帮助你找出真正的空间到图像空间的转换是把一个规则的网格(一张有规则的黑色圆点的纸)放在皮带上,观察它的运动。在俯视模式下安装相机可能会使事情变得更简单。你知道吗

只测量平均直径意味着你不需要把每一个土豆都弄对,一个标准的边缘检测算法可能足以检测出大部分土豆,然后将椭圆拟合到它们身上,制作直径直方图并查看中值。你知道吗

或者计算土豆亮度的自相关(土豆之间,它是暗的,土豆本身反射光),并拟合自相关中的峰宽。或者计算图像的傅里叶变换,并在一个频带内对平均振幅进行归一化,在该频带内,您可以使用另一个频带的平均振幅来预测土豆的大小。如果你能用已知大小的土豆来校准这个方法,这是最有效的。这意味着您可以记录已知不同大小的土豆,从而校准自相关或基于FFT的度量。你知道吗

我会选择机器学习方法,因为它有可能给你一个土豆的测量值。你知道吗

How shall I keep track each potato so it is only counted once?

在视频的时间范围内,每一个土豆都是可见的(潜在的),这是传送带上的土豆通过视野所需要的。一旦确定了透视图,就可以将图像中的位置和录制时间与传送带上的位置联系起来,只要土豆不改变传送带上的位置,就可以在整个可见时间范围内轻松识别它。你知道吗

你基本上必须知道(估计)运输带的移动,然后你可以“撤消”它(计算)和平均所有发生在你看到同一个土豆。你知道吗

我建议采用以下一般工作流程:

  • 考虑将相机置于更有利的位置(顶视图)。你知道吗
  • 通过跟踪更容易检测到皮带上已知距离的物体来测量真实空间到图像的时空变换。你知道吗
  • 应用逆变换,如果需要,对同一对象的所有图像求平均值(如果单个图像有噪声,对比度低,则可以提供帮助)
  • 或者使用一个简单的边缘检测和做一些统计,以获得马铃薯的平均直径(可能与已知大小的马铃薯校准)或。。你知道吗
  • 。。使用机器学习识别(并跟踪,如果你没有平均)单个土豆
  • 如果你在路上遇到问题,把它们分解成好的小块,在一个单独的问题中要求每个问题的解决方案。你知道吗

相关问题 更多 >

    热门问题