如何像 MATLAB imread() 一样读取 java 中的图像?

How to read image in java like MATLAB imread()?

in Java 我想读一张图片。为此,我使用了这段代码:

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

它 works.But 在 br 中的值是这样的:-16220000 , -5682000 ,...

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

在 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 你可以找到一些教程和整个文档。

但是,图像可以以多种不同的方式存储。一旦你的内存堆中有了图像,你就可以使用这些值,因此,将 image-pixel-values 固定在你喜欢的范围内(在本例中为 [0,255])。

例如,如果您有一个 [0,X] 范围内的像素,并且您希望将其映射到 [0,255] 范围内,则公式为 pixel_value/X*255。您可以使用 'for' 迭代输入图像的总像素数。