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

标签 java c++ swing opencv

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

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

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

最佳答案

事实证明,Core.inRange 将第二个参数(即 Mat)更改为单 channel 图像。因此,为了获得 3 个 channel ,我需要使用 Imgproc.cvtColor 函数将其重新转换回 3 个 channel 。

关于Java opencv inRange阈值函数使我的图像变成三个不同的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43905110/

相关文章:

java - 为什么 ArrayList 副本的行为与整数副本不同?

c++ - std::pair of std::string 和自定义类无法在 std::map::insert(std::make_pair(string, class)) 上复制

java - NetBeans IDE java 程序无法正确检索目录

c++ - 在 64 位操作系统上使用 WaitForSingleObject 的问题

c++ - CRTP 和基类定义的类型的可见性

java - 在 JAVA 中将图像添加到 GUI 的问题

java - 有没有办法过滤/搜索 HTMLEditorKit 中的内容?

java - 使用扫描仪读取文件数据

java - Hibernate Java 持久化列问题

java - 进行涉及 Java 的 RAW 套接字编程的最佳方法