如何在java中读取图像,如MATLAB imread()?

时间:2017-02-12 07:06:46

标签: java image matlab image-processing bufferedimage

在Java中

我想读一个图像。为此,我使用了这段代码:

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

并且它有效。但是br中的值是这样的:-16220000,-5682000,....

在MATLAB中,imread()将图像读取到数组,值的范围为0到256。 imread()如何运作?

1 个答案:

答案 0 :(得分: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。您可以使用&#39; for&#39;迭代输入图像的总像素数。