簡體   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