java - 我应该遵循哪些步骤来确定一杯液体的液位?
问题描述
我对 OpenCV Java 相当陌生,我一直在寻找方法来完成标题所要求的工作。到目前为止,据我了解,第一步应该是使用像 Sobel 或 Laplace 这样的检测边缘滤波器。
来自https://docs.opencv.org/3.4/d2/d2c/tutorial_sobel_derivatives.html,我得到以下结果:glass_sobel
从现在开始,我不知道下一步该做什么......我应该怎么做才能得到我想要的?谢谢你的帮助 !
解决方案
采取垂直边缘差异(sobel)确实是正确的一步。但首先我建议修复一些参数。例如,玻璃的位置、大小和形状是否固定?然后拍摄没有流体的图像,并使用它从结果中推断出玻璃。如果没有,我会采取以下步骤: 尝试增加边缘可见性。在您的图像中,您确实看到了一个清晰的边缘,但计算机可能会将其视为 4 个边缘,因此请尝试确保将彼此靠近的边缘视为一个边缘(扩张操作可能会这样做)。根据液体的不同,您也可以从图像中提取某种颜色。水是这里最不幸的情况,但橙汁之类的东西很容易被发现。对于更清晰的边缘,我会尝试从玻璃中取出一条垂直线,并对每个边缘进行分类(它是玻璃的一部分还是液体的一部分)。
推荐阅读
- c++ - 如何从 C++ 中的向量中删除不连续的元素
- ios - Big Sur、React Native 和 launchPackager.command
- c# - 如何从 C# 中的枚举中获取整数值
- json - 在 Airflow 中解析 JSON 字符串
- node.js - NodeJs 缓冲区未附加到 Nodemailer 文件
- javascript - 想要删除 / ( -) 。从电话号码字符串
- python - 弹性搜索 - 带有字段映射的多个索引
- c# - FileServer .net 核心日志记录和强制下载
- c++ - 给定范围内有 2 个除数的总数
- c++ - 在 if 语句中定义的局部变量意外出现