无法使用CImg加载任何图像

问题描述 投票:0回答:2

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

我找到了关于这个说法的其他帖子来定义cimg_use_pngcimg_use_jpeg,但后来我得到汇编错误,告诉我我需要png.njpeglib.h。不知道我应该从哪里得到这些。

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

c++ libjpeg cimg
2个回答
4
投票

如果你想打开JPEG图像,你需要安装libjpeg并编译和链接它。

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

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


好吧,经过两天痛苦的日子试图弄清楚地球Visual Studio 2017如何工作,以及如何安装和集成libjpeg,我现在可以解释如何在Windows上安装CImg和libjpeg。

步骤1

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

enter image description here

第2步

libjpeg下载IJG website。我拿了jpegsr9b.zip,因为它是最新的。

enter image description here

第3步

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

第4步

转到开始>所有程序> 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 - 一些奇怪的微软“解决方案”文件。命令是:

nmake -f makefile.vc setup-v10

你应该得到一个名为jpeg.sln的文件 - hurray!

第7步

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

enter image description here

第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步

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

第10步

现在告诉Visual Studio包含文件(对于CImglibjpeg)的位置以及库文件(对于libjpeg)的位置:

enter image description here

第11步

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

enter image description here

第12步

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

enter image description here


如果你在Linux / macOS上使用cmakethis answer会指明你的方式。


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

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

0
投票

如果您希望CImg与jpeg或png图像一起使用,则需要提供适当的库。

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

如何将libjpeg安装到您的项目中

  1. 下载jpegsr9c.zip(或更新)zip文件,源代码为downloading jpeg source code
  2. 将存档解压缩到一个文件夹。
  3. 复制从存档folder from archive中提取的文件夹的地址
  4. 在开始菜单start menu search中搜索开发人员命令提示符
  5. 导航到Developer Command Prompt中的解压缩文件夹: cd“C:\ Users \ HP \ Downloads \ temp \ jpeg-9c”

使用右键单击粘贴。

changing directory

  1. 运行此命令: NMAKE / f makefile.vs setup-v15

running nmake

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

new file

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

retarget projects

  1. 如果要为64位平台构建项目:右键单击解决方案,选择Configuration Manager并添加新平台x64 select configuration manager new platform x64 platform
  2. 构建解决方案

build solution

build success

  1. 现在让我们使用CImg转移到您的项目。在你的项目中创建一个文件夹jpeglib(对我来说是IncludedLibraries \ jpeglib)。并将其添加到Project Properties -> C/C++ -> Additional Include DirectoriesProject Properties -> Linker -> Additional Library Directories Additional Include Directories Additional Library Directories
  2. jpeg.lib添加到Project Properties -> Linker -> Input -> Additional Dependencies

Additional Dependencies

  1. x64/Release/jpeg.lib复制到此文件夹。
  2. 在jpeg项目中搜索所有头文件(`.h)并将它们复制到此文件夹。

all files

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

define cimg_use_jpeg

  1. 全部完成! CImg现在能够读取和保存jpeg文件。
© www.soinside.com 2019 - 2024. All rights reserved.