[英]Cannot load any image with CImg
每当我尝试加载图像时,都会收到一条错误CImg<unsigned char>::load(): Failed to recognize format of file
。 jpg和png文件都会发生这种情况。
我发现了其他有关定义cimg_use_png
和cimg_use_jpeg
,但是随后出现编译错误,告诉我需要png.n
和jpeglib.h
。 不知道我应该从哪里得到这些。
我不确定我哪里出了问题,所以我不知道具体要问些什么。 怎么了?
如果要打开JPEG
图像,则需要安装libjpeg
并对其进行编译和链接。
如果要打开PNG
图像,则需要安装libpng
和libz
(用于压缩)并针对它们进行编译和链接。
目前,您应该能够使用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包含文件(对于CImg
和libjpeg
)在哪里,以及库文件(对于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安装到您的项目
下载带有源代码的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 ),然后将它们复制到此文件夹。
#include "CImg.h"
之前添加#define cimg_use_jpeg
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.