2017-02-12 2 views
1

на Java Я хочу прочитать изображение. Для этого я использовал этот код:Как читать изображение в java как MATLAB imread()?

BufferedReader br = ImageIO.read(new File('a.png')); 

и works.But значения в br, как это: -16220000, -5682000, ....

В MATLAB, imread() считывает изображение в массив, а значения находятся в диапазоне от 0 до 256. Как работает imread()?

ответ

1

В Java (например, на C и C++) вы можете использовать библиотеку OpenCV. В этом случае инструкции вы ищете:

include "opencv2/highgui/highgui.hpp" 
include "iostream" 
using namespace cv; 
using namespace std; 
int main(){ 
Mat img = imread("lena.png", CV_LOAD_IMAGE_COLOR); 
    if (img.empty()){ 
    cout << "Cannot load image!" << endl; 
    return -1; 
    } 
namedWindow("image", CV_WINDOW_AUTOSIZE); 
imshow("image", img); 
waitKey(0); 
return 0; 
} 
  • Here вы можете найти веб-страницу со всей информацией о том, как добавить эти библиотеки.

  • Here вы можете найти руководство и всю документацию.

Однако изображение может быть сохранено различными способами. После того, как у вас есть изображение в куче памяти, вы можете работать со значениями и, таким образом, исправить значения пикселя изображения в нужной степени (в данном случае [0,255]).

Например, если у вас есть пиксель в диапазоне [0, X], и вы хотите отобразить его в диапазоне [0,255], то формула равна pixel_value/X*255. Вы можете использовать 'for' для итерации по общему количеству пикселей вашего входного изображения.

+0

спасибо, но я хочу знать, что алгоритм не использовать библиотеку –

+0

Внутри библиотеки можно взглянуть на алгоритм. В любом случае: алгоритм для чего? – Leos313

+0

В любом случае, я только что отредактировал ответ – Leos313

Смежные вопросы