gpt4 book ai didi

c++ - 无法使用 cimg 库将图像正确保存到文件

转载 作者:可可西里 更新时间:2023-11-01 18:37:11 26 4
gpt4 key购买 nike

这是我的全部代码:

#include "CImg.h"
#include <iostream>

using namespace cimg_library;
int main() {

CImg<float> image(100,100,1,3,0);
const float color[] = {1.0,1.0,0.0};
image.draw_point(50,50,color);
image.save("file.bmp");
CImgDisplay local(image, "Hah");
while (true) {
local.wait();
}

}

这成功地在窗口中显示了我所期望的,即一个完全黑色的正方形在 50,50 处有一个白色像素。然而,file.bmp 只是一个黑色方 block ,没有像素(并保存已通过重复调用 draw_point 进行修改的 cimg 图像在一个更大的程序中做一些有用的事情也会失败)。这是怎么回事?

最佳答案

问题是您在启用规范化的情况下创建 CImgDisplay。因此,您的 {1,1,0} 像素被标准化为 {255,255,0} 并且在您的屏幕上可见。

CImg.save 不执行归一化,因此像素作为非常暗的像素保存到磁盘。

您可以通过更改白色像素颜色来解决此问题:

const float color[] = {255.,255.,255.};

并且,可选地,通过禁用规范化:

CImgDisplay local(image, "Hah", 0);

或者,您可以在保存或显示之前标准化原始图像:

image.draw_point(50,50,color);
image.normalize(0, 255);
image.save("file.bmp");

引用资料:

关于c++ - 无法使用 cimg 库将图像正确保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10286111/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com