我正在尝试使用OpenCV(2.4.0) for C++加载和显示.PGM图像。
void open(char* location, int flag, int windowFlag)
{
Mat image = imread(location, flag);
namedWindow("Image window", windowFlag);
imshow("Image window", image);
waitKey(0);
}
我这样调用open:
open("./img_00245_c1.pgm", IMREAD_UNCHANGED, CV_WINDOW_AUTOSIZE);
问题在于打开窗口时显示的图像比使用IrfanView打开文件时更暗。此外,如果我尝试将此图像写入另一个文件,就像这样:
Mat imgWrite;
imgWrite = image;
imwrite("newImage.pgm", imgWrite)
我将获得一个不同于原始文件内容的文件,并且IrfanView将像我的函数显示imshow一样显示它。
是否有一个不同的imread标志用于.PGM文件,以便我可以获取原始文件以进行显示和保存?
编辑:图像pgm文件 编辑2:注意到:IrfanView将图像归一化为最大像素值255。为了使用OpenCV清晰地查看图像,加载到Mat中时也应该对图像进行归一化。这是否可以直接使用OpenCV函数实现,而无需迭代像素并修改其值?