[英]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.