gpt4 book ai didi

c++ - 如何检测测量水位的白色仪表板?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:23:43 24 4
gpt4 key购买 nike

我从事的项目需要使用白色仪表板测量水位。目前我的做法是:

  1. 分割白色仪表板。
  2. 对照仪表板测量水位。

但我在分割仪表板时遇到了困难。我避免使用基于颜色的分割,因为我需要它不随光线变化而变化,所以我改为使用形态学操作来检测边缘。我有这张图片:

enter image description here enter image description here

形态学操作的结果似乎很有希望。白色仪表板上的边缘比其他的更锋利。但我仍然不知道如何正确分割电路板。你能建议一种算法来分割电路板吗?或者请建议您是否有不同的水位测量算法。

这是我的代码:

#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

int main()
{
cv::Mat src = cv::imread("image.jpg");
if (!src.data)
return -1;

cv::Mat bw;
cv::cvtColor(src, bw, CV_BGR2GRAY);
cv::medianBlur(bw, bw, 3);

cv::Mat dilated, eroded;
cv::dilate(bw, dilated, cv::Mat());
cv::erode(bw, eroded, cv::Mat());
bw = dilated - eroded;

cv::imshow("src", src);
cv::imshow("bw", bw);
cv::waitKey();
return 0;
}

我正在使用 C++,但我对 Matlab/Mathematica 中的其他实现持开放态度。

最佳答案

如果相机确实是静止的,您可以使用这种快速而肮脏的方法:

im= rgb2gray(imread('img.jpg'));
imr=imrotate(im,1);
a=imr(100:342,150);
plot(a)

enter image description here

图表中显示的最小值是从 10(左)到 1(右)的指标尺度。您可以使用峰值检测器来定位它们的位置并插入它们之间的水位。所以,没有真正需要花哨的图像处理...

关于c++ - 如何检测测量水位的白色仪表板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15432896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com