我想创建一个依赖 HSV 过滤的黑白图像。然而,在将图像从 BGR 转换为 HSV 并应用该inRange()方法后,该矩阵被简化为单通道矩阵(值为0或255)并且无法转换回 BGR。
有没有简单的方法来解决这个问题?我什至需要反向转换的步骤,还是可以以某种方式显示带有我所拥有信息的新图像?我对 OpenCV还很陌生,并且已经发现了一个非常相似的问题,但我仍然对该怎么做感到困惑。
例子:
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Mat img = Imgcodecs.imread(path);
Mat hsv = new Mat();
Mat img_new = new Mat();
Imgproc.cvtColor(img,hsv,Imgproc.COLOR_BGR2HSV);
Core.inRange(hsv, new Scalar(hue,saturation,value),new Scalar(hue,saturation,value),hsv);
Imgproc.cvtColor(hsv, img_new, Imgproc.COLOR_HSV2BGR); // This line doesn't work.
// display new image in JFrame
MatOfByte mob = new MatOfByte();
Imgcodecs.imencode(".tif", img_new, mob);
byte ba[] = mob.toArray();
BufferedImage bi = ImageIO.read(new ByteArrayInputStream(ba));
newImgLabel.setIcon(new ImageIcon (bi));
呼啦一阵风
相关分类