Java JAI BufferedImage与C ++ OpenCV Mat imread?

时间:2015-09-29 13:13:55

标签: java c++ opencv jai

在Java中:

我正在使用JAI阅读图像:

 BufferedImage image = javax.imageio.ImageIO.read(new File("path to JPG image"));

然后,我查看像素(0,2)的rgb值:

System.out.println("pixel[0][2]="+(new Color(image.getRGB(2, 0))));

在C ++ OpenCV中:

Mat image = imread("path to the same JPG image");
image.convertTo(image, CV_32S);
cout <<" r value of pixel[0][2] "<< image.at<Vec3i>(0, 2)[2] << "\n";

值不同:Java中的r值为156,C ++中的r值为155.为什么?

1 个答案:

答案 0 :(得分:1)

我认为这与图像的格式有关,而与Java或OpenCV无关。 JPEG是有损压缩,因此在解码数据时,您可能会为同一图像获得不同的输出。这取决于您用于读取图像信息的解码器。您正在尝试的问题类似于下面问题中描述的问题。

Reading jpg file in OpenCV vs C# Bitmap