每当我尝试加载图片时,都会收到错误CImg<unsigned char>::load(): Failed to recognize format of file
。对于jpg和png文件都会发生这种情况。
我找到了关于此说法的其他帖子来定义cimg_use_png
和cimg_use_jpeg
,但后来我收到编译错误,我需要png.n
和jpeglib.h
。不知道我应该从哪里得到这些。
我不确定我哪里出错了,所以我不知道具体要问什么。出了什么问题?
答案 0 :(得分:4)
如果要打开JPEG
图像,则需要安装libjpeg
并进行编译和链接。
如果要打开PNG
图像,则需要安装libpng
和libz
(用于压缩)并编译并链接它们。
目前,您应该能够使用NetPBM格式的图像 - 即PBM,PGM和PPM。
好吧,经过两天痛苦的努力,试图了解地球 Visual Studio 2017 的工作方式,以及如何安装和集成libjpeg
,我现在可以解释如何安装Windows上的 CImg 和libjpeg。
第1步
您需要安装 Visual Studio 2017 ,这意味着您需要 Windows 7 SP1 或更高版本。安装时,请确保包含&#34; Windows 8.1 SDK&#34;
第2步
从IJG website下载libjpeg
。我拿了jpegsr9b.zip
,因为它是最新的。
第3步
解压缩文件并将其存储在HOME目录中名为libjpeg
的目录中。
第4步
转到开始&gt;所有程序&gt; Microsoft Visual Studio 2017&gt; Visual Studio工具&gt; 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 &#34;解决方案&#34; 文件。命令是:
nmake -f makefile.vc setup-v10
你应该得到一个名为jpeg.sln
的文件 - 欢呼!
第7步
现在启动 Visual Studio 2017 ,然后打开刚刚创建的jpeg.sln
文件并构建项目。它将在Release
目录和libjpeg
目录中创建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包含文件(CImg
和libjpeg
)的位置以及库文件(libjpeg
)的位置:
第11步
现在告诉 Visual Studio 2017 您要与libjpeg
建立链接:
第12步
现在您可以编译,链接和运行 CImg 程序并加载JPEG文件并在屏幕上显示它们!
如果您在 Linux / macOS 上使用cmake
,this answer会向您显示。
如果您从命令行编译 macOS ,如果您在屏幕上显示图像,则需要安装 XQuartz ,并且您&# 39;我想要这样的东西:
g++ -std=c++11 sample.cpp -o sample -I /opt/X11/include -L /opt/X11/lib -lX11 -ljpeg -lpng -lz
答案 1 :(得分:0)
如果您希望CImg处理jpeg或png图像,则需要提供适当的库。
这是一个如何将libjpeg安装到Visual Studio项目的教程。这基本上是Mark Setchell的答案的2019年更新。
如何将libjpeg安装到您的项目
下载包含源代码的jpegsr9c.zip(或更新版本)zip
将存档提取到文件夹中。
导航到开发人员命令提示符中的提取文件夹:
cd“ C:\ Users \ HP \ Downloads \ temp \ jpeg-9c”
使用右键单击粘贴。
运行此命令:
NMAKE / f makefile.vs setup-v15
jpeg.sln
(现已创建)。现在让我们使用CImg移至您的项目。在您的项目中创建一个文件夹jpeglib(对我来说是IncludedLibraries \ jpeglib)。并将其添加到Project Properties -> C/C++ -> Additional Include Directories
和Project Properties -> Linker -> Additional Library Directories
将jpeg.lib
添加到Project Properties -> Linker -> Input -> Additional Dependencies
将x64/Release/jpeg.lib
复制到此文件夹。
在jpeg项目中搜索所有头文件(` .h )并将其复制到此文件夹中。
#define cimg_use_jpeg
之前添加#include "CImg.h"