繁体   English   中英

无法使用CImg加载任何图像

[英]Cannot load any image with CImg

每当我尝试加载图像时,都会收到一条错误CImg<unsigned char>::load(): Failed to recognize format of file jpg和png文件都会发生这种情况。

我发现了其他有关定义cimg_use_pngcimg_use_jpeg ,但是随后出现编译错误,告诉我需要png.njpeglib.h 不知道我应该从哪里得到这些。

我不确定我哪里出了问题,所以我不知道具体要问些什么。 怎么了?

如果要打开JPEG图像,则需要安装libjpeg并对其进行编译和链接。

如果要打开PNG图像,则需要安装libpnglibz (用于压缩)并针对它们进行编译和链接。

目前,您应该能够使用NetPBM格式的图像-即PBM,PGM和PPM。


好了,经过两天的痛苦工作,试图弄清楚Earth Visual Studio 2017的工作原理以及如何安装libjpeg并将其集成后,我现在可以解释如何在Windows上安装CImg和libjpeg。

第1步

您需要安装Visual Studio 2017 ,这意味着您需要Windows 7 SP1或更高版本。 安装时,请确保包括“ Windows 8.1 SDK”

在此处输入图片说明

第2步

IJG网站下载libjpeg 我选了jpegsr9b.zip因为它是最新的。

在此处输入图片说明

第三步

解压缩文件并将其存储在HOME目录中的libjpeg目录中。

第四步

转到开始>所有程序> Microsoft Visual Studio 2017> Visual Studio工具> VS2017开发人员命令提示符

导航到刚刚解压缩的目录。 那将是这样的:

cd libjpeg
cd jpeg-9b

第5步

现在,您将需要找到一个名为win32.mak的文件。 我在C:\\Program Files\\Microsoft SDKs\\Windows\\v7.0\\Include找到了我的。 如果您拥有Windows 8.1 SDK,则可能在其他地方。 无论如何,无论您身在何处,都需要将其包含目录添加到包含中。 所以我做了:

set INCLUDE=%INCLUDE%;C:\Program Files\Microsoft SDKs\Windows\v7.0\Include

第6步

现在运行nmake以获得您的SLN-一些奇怪的Microsoft “解决方案”文件。 该命令是:

nmake -f makefile.vc setup-v10

而且您应该得到一个名为jpeg.sln的文件-欢呼!

步骤7

现在启动Visual Studio 2017 ,然后打开刚刚创建的jpeg.sln文件并生成项目。 它将在您的libjpeg目录中创建一个Release目录,并在Release目录中找到jpeg.lib 您现在已经安装了libjpeg

在此处输入图片说明

步骤8

关闭该项目,然后启动一个新的C ++命令行项目,并编写基于CImg的程序。 我写了有史以来最简单的文章:

#define cimg_use_jpeg
#include "CImg.h"
using namespace cimg_library;
int main() {
    CImg<unsigned char> img("C:\\Users\\Mark\\test.jpg");
    img.display("Image");
    return 0;
}

步骤9

Github下载CImg.h ,并将其保存在HOME目录中名为CImg的目录中。

第10步

现在告诉Visual Studio包含文件(对于CImglibjpeg )在哪里,以及库文件(对于libjpeg )在哪里:

在此处输入图片说明

步骤11

现在告诉Visual Studio 2017您要与libjpeg链接:

在此处输入图片说明

步骤12

现在,您可以编译,链接和运行CImg程序,并加载JPEG文件并将其显示在屏幕上!

在此处输入图片说明


如果您在Linux / macOS上使用cmake ,则此答案将向您展示方法。


如果要从命令行在macOS上进行编译,则在屏幕上显示图像时需要安装XQuartz ,并且需要以下内容:

g++ -std=c++11  sample.cpp -o sample -I /opt/X11/include -L /opt/X11/lib -lX11 -ljpeg -lpng -lz

如果要CImg处理jpeg或png图像,则需要提供适当的库。

这是一个如何将libjpeg安装到Visual Studio项目的教程。 这基本上是Mark Setchell的答案的2019年更新。

如何将libjpeg安装到您的项目

  1. 下载带有源代码的jpegsr9c.zip (或更高版本)zip 下载jpeg源代码

  2. 将存档解压缩到文件夹。

  3. 复制从存档中提取的文件夹的地址 存档中的文件夹

  4. 在“开始”菜单中搜索“ 开发人员命令提示符” 开始菜单搜索

  5. 导航到“开发人员命令提示符”中的提取文件夹:

    cd“ C:\\ Users \\ HP \\ Downloads \\ temp \\ jpeg-9c”

使用右键单击粘贴。

更改目录

  1. 运行以下命令:

    NMAKE / f makefile.vs setup-v15

运行nmake

  1. 打开jpeg.sln (现已创建)。

新文件

  1. 在解决方案资源管理器中,右键单击该项目。 选择重新定位项目。 确认提示。

重新定位项目

  1. 如果要为64位平台构建项目:右键单击解决方案,选择Configuration Manager并添加新平台x64 选择配置管理器 新平台 x64平台

  2. 建立解决方案

建立解决方案

建立成功

  1. 现在,让我们使用CImg移至您的项目。 在您的项目中创建一个文件夹jpeglib(对我来说是IncludedLibraries \\ jpeglib)。 并将其添加到Project Properties -> C/C++ -> Additional Include Directories并添加到Project Properties -> Linker -> Additional Library Directories 其他包含目录 附加图书馆目录

  2. jpeg.lib添加到Project Properties -> Linker -> Input -> Additional Dependencies

其他依赖

  1. x64/Release/jpeg.lib复制到此文件夹。

  2. 在jpeg项目中搜索所有头文件(` .h ),然后将它们复制到此文件夹。

全部文件

  1. 在项目中的#include "CImg.h"之前添加#define cimg_use_jpeg

定义cimg_use_jpeg

  1. 全部做完! CImg现在可以读取和保存jpeg文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM