C++ 无法使用CLion(macOS)上的CImg打开.png文件
我尝试过包括libpng16/png.h和#define cimg_use_png,但没有一个解决了这个错误。另外,我在同一个目录中有main.cpp、lenna.jpg和CImg.h CMakeLists.txt:C++ 无法使用CLion(macOS)上的CImg打开.png文件,c++,macos,png,clion,cimg,C++,Macos,Png,Clion,Cimg,我尝试过包括libpng16/png.h和#define cimg_use_png,但没有一个解决了这个错误。另外,我在同一个目录中有main.cpp、lenna.jpg和CImg.h CMakeLists.txt: cmake_minimum_required(VERSION 3.6) project(HelloWorld) set(CMAKE_CXX_STANDARD 17) set(SOURCE_FILES main.cpp) add_executable(HelloWorld ${S
cmake_minimum_required(VERSION 3.6)
project(HelloWorld)
set(CMAKE_CXX_STANDARD 17)
set(SOURCE_FILES main.cpp)
add_executable(HelloWorld ${SOURCE_FILES})
set(YOU_NEED_X11 1)
set(YOU_NEED_PNG 1)
if (${YOU_NEED_PNG} EQUAL 1)
message(STATUS "Looking for libpng...")
find_package(PNG REQUIRED)
include_directories(${PNG_INCLUDE_DIR})
target_link_libraries (HelloWorld ${PNG_LIBRARY})
target_compile_definitions(HelloWorld PRIVATE cimg_use_png=1)
endif()
if (${YOU_NEED_X11} EQUAL 1)
message(STATUS "Looking for X11...")
find_package(X11 REQUIRED)
include_directories(${X11_INCLUDE_DIR})
target_link_libraries(HelloWorld ${X11_LIBRARIES})
else()
target_compile_definitions(HelloWorld PRIVATE cimg_display=0)
endif()
main.cpp:
#include <iostream>
#include "CImg.h"
using namespace cimg_library;
int main() {
CImg<unsigned char> img("lenna.png");
int h = img.height();
int w = img.width();
int s = img.spectrum();
std::cout << "h: " << h << " w: " << w << " s: " << s << std::endl;
return 0;
}
#包括
#包括“CImg.h”
使用名称空间cimg_库;
int main(){
CImg img(“lenna.png”);
int h=img.height();
int w=img.width();
int s=img.spectrum();
std::cout似乎找不到lenna.png
。相对路径相对于包含可执行文件的目录。这意味着,如果可执行文件位于cmake build debug/HelloWorld
,并且您尝试打开lenna.png
,则会打开cmake build debug/lenna.png
处的文件。这意味着您应该手动将lenna.png
复制到cmake build debug
(我不建议这样做),或者让cmake为您执行此操作
将其添加到CMakeLists.txt
文件中
add_custom_command(
TARGET HelloWorld POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_SOURCE_DIR}/lenna.png
${CMAKE_BINARY_DIR}/lenna.png
)
这将导致每次编译可执行文件时,都将lenna.png
复制到与可执行文件相同的目录中。请稍候,是否尝试使用libpng打开jpeg?请尝试运行文件lenna.png
,查看它是png还是jpeg,因为您似乎有点不确定。@MarkSetchell命令显示:lenna.png:png im年龄数据,512 x 512,8位/彩色RGB,非交错。@Kerndog73这是一个.png请在您工作的目录中运行ls-l | pbcopy
,然后单击问题下方的edit
。使用Cmd+V粘贴代码,然后选择新粘贴的代码,然后单击格式工具栏中的{}
(接近粗体和斜体)将目录列表格式化为代码。谢谢。现在错误日志显示:无法识别文件“lenna.png”的格式。
add_custom_command(
TARGET HelloWorld POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_SOURCE_DIR}/lenna.png
${CMAKE_BINARY_DIR}/lenna.png
)