Java JAI BufferedImage по сравнению с C ++ OpenCV Mat непрочитанный?

В Java:

Я читаю изображение с помощью JAI:

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

Затем я смотрю на значение rgb пикселя (0,2):

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";

Значения разные: значение r в Java равно 156, а в C ++ — 155. Почему?

0

Решение

Я думаю, что это связано с форматом изображения, а не с Java или OpenCV. JPEG — это сжатие с потерями, поэтому при декодировании данных вы можете получить разные выходные данные для одного и того же изображения. Это будет зависеть от того, какой декодер вы используете для чтения информации об изображении. Проблема, которую вы экспериментируете, похожа на проблему, описанную в приведенном ниже вопросе.

Чтение jpg файла в OpenCV против C # Bitmap

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]