我想读一个图像。为此,我使用了这段代码:
BufferedReader br = ImageIO.read(new File('a.png'));
并且它有效。但是br
中的值是这样的:-16220000,-5682000,....
在MATLAB中,imread()
将图像读取到数组,值的范围为0到256。
imread()
如何运作?
答案 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;
}
但是,图像可以以多种不同方式存储。一旦在内存堆中有了图像,就可以使用这些值,因此,将图像像素值固定在您喜欢的范围内(在本例中为[0,255])。
例如,如果您有一个[0,X]范围内的像素,并且您希望将其映射到[0,255]范围内,则公式为pixel_value/X*255
。您可以使用&#39; for&#39;迭代输入图像的总像素数。