在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.为什么?
答案 0 :(得分:1)
我认为这与图像的格式有关,而与Java或OpenCV无关。 JPEG是有损压缩,因此在解码数据时,您可能会为同一图像获得不同的输出。这取决于您用于读取图像信息的解码器。您正在尝试的问题类似于下面问题中描述的问题。