Java opencv inRange 阈值函数使我的图像变成三个不同的图像?

Posted

技术标签:

【中文标题】Java opencv inRange 阈值函数使我的图像变成三个不同的图像?【英文标题】:Java opencv inRange thresholding function makes my image into three different images? 【发布时间】:2017-05-11 01:38:12 【问题描述】:

我正在使用 java opencv,这是我正在执行的行。

Imgproc.cvtColor(originalImage, hsvImage, Imgproc.COLOR_BGR2HSV);
Core.inRange(hsvImage, low, high, thresholdImage);

low 和 high 是一些标量值(每个大小为 3)。所以你可以看到我的原始图像有 3 个通道,但我的 thresholdImage 只有一个通道,为什么?因此,当我尝试显示thresholdImage 时,我的JFrame 中出现了三个小图像。如何解决这个问题?

【问题讨论】:

我认为这个问题很完整。 SO 的政策需要具体的问题,我认为这个问题非常具体,我倾向于在没有不必要信息的情况下尽可能具体地提出问题。请参考我的回答,因为我想我已经弄清楚了。如果我错了,请纠正我。谢谢。 【参考方案1】:

原来Core.inRange 将第二个参数Mat 更改为单通道图像。所以为了得到 3 个频道,我需要使用Imgproc.cvtColor 函数将其重新转换回 3 个频道。

【讨论】:

以上是关于Java opencv inRange 阈值函数使我的图像变成三个不同的图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何在OpenCV中为InRange阈值选择颜色的最佳HSV值

[opencv]Scalarc类 常用颜色阈值总结

在 OpenCV (Java) 中获取正确的 HSV 颜色 inRange

Opencv中的阈值函数

从 Objective C++ 调用 OpenCv inRange 函数时的行为不同

OpenCV inRange 更改 Mat 类型