如何像 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;
}
但是,图像可以以多种不同的方式存储。一旦你的内存堆中有了图像,你就可以使用这些值,因此,将 image-pixel-values 固定在你喜欢的范围内(在本例中为 [0,255])。
例如,如果您有一个 [0,X] 范围内的像素,并且您希望将其映射到 [0,255] 范围内,则公式为 pixel_value/X*255
。您可以使用 'for' 迭代输入图像的总像素数。
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;
}
但是,图像可以以多种不同的方式存储。一旦你的内存堆中有了图像,你就可以使用这些值,因此,将 image-pixel-values 固定在你喜欢的范围内(在本例中为 [0,255])。
例如,如果您有一个 [0,X] 范围内的像素,并且您希望将其映射到 [0,255] 范围内,则公式为 pixel_value/X*255
。您可以使用 'for' 迭代输入图像的总像素数。