【问题标题】:isolate blue color隔离蓝色
【发布时间】:2018-08-27 02:12:19
【问题描述】:

我想使用 OpenCV & objc++ 从图像中提取特定颜色,所以我遵循了这个tutorial。 “算法”的很大一部分已经在起作用,但它仍然会遇到一些问题:

这是我想提取不同颜色区域的图像:


在图像上应该应用简单的颜色提取来获得正确的彩色区域(在一种情况下只是红色区域,在另一种情况下可能只是蓝色立方体)

使用我的代码(我在下面添加)这是我提取红色立方体的结果:

但我似乎找不到提取不同颜色的有效方法(比如只提取蓝色立方体)

查看我的红色立方体提取代码:

cv::Scalar   min(220/2, 190, 80);
cv::Scalar   max(260/2, 255, 255);
cv::Mat threshold_frame;
cv::inRange( tempMatHSV, min, max, threshold_frame);

cv::Mat str_el = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3));
morphologyEx(threshold_frame, threshold_frame, cv::MORPH_OPEN, str_el);
morphologyEx(threshold_frame, threshold_frame, cv::MORPH_CLOSE, str_el);

任何帮助如何编辑 标量参数 以获得蓝色匹配将不胜感激

【问题讨论】:

  • 您采取了哪些步骤来检测蓝色?
  • 我刚刚编辑了最小-最大参数到蓝色 HSV 颜色值,但它似乎不起作用,因为没有检测到蓝色 - 图像全黑! @ZdaR
  • 教程中的最小值和最大值完全相同,而您的代码给出了不同的结果,这很奇怪。在本教程中,这些值用于检索蓝色,但您的代码检索红色。您确定提供的代码会产生提供的掩码吗? 220 - 260 色调值用于蓝色,而不是红色。

标签: javascript image opencv colors objective-c++


【解决方案1】:

色调包含主要颜色信息。 我建议从这些色调范围开始(OpenCV 格式):

Red - Hue [0 - 30] and [150 - 180]
Green - Hue [30 - 90]
Blue - Hue [90 - 150]

同时将 Saturation 和 Value 设置为 [0 - 255] 的全范围

然后您可以尝试使用饱和度和值来适应照明条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-17
    • 2014-02-28
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 2010-11-01
    相关资源
    最近更新 更多