【问题标题】:OpenCV: cannot compile when using imwrite() functionOpenCV:使用 imwrite() 函数时无法编译
【发布时间】:2016-01-27 23:53:52
【问题描述】:

在我简单的第一个 OpenCV 应用程序中,我想保存 cam 获取的帧,所以我使用 imwrite() 作为教程说的。问题是我无法编译,因为我收到了这个错误:

Undefined symbols for architecture x86_64:
"cv::imwrite(cv::String const&, cv::_InputArray const&, std::vector<int,  std::allocator<int> > const&)", referenced from:
_main in video-87ad7a.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

在这里阅读了一些帖子,我发现这是关于使用的 C++ 标准库的问题,所以我添加了标志 libstdc++,但如下:

g++ -stdlib=libstdc++ -I/usr/local/include -L/usr/local/lib/ -g -o binary video.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_stitching -lopencv_videoio -lopencv_videostab

没有解决问题。我该怎么办?

更新 似乎this 是解决方案。我不知道我错过的该死的旗帜是什么

【问题讨论】:

    标签: c++ opencv compilation linker libstdc++


    【解决方案1】:

    看起来您缺少 imwrite() 所在的“-lopencv_imgcodecs”。
    参考OpenCV imgcodecs头文件here

    【讨论】:

    • 有趣的事情 - 当我切换到 clang 时,我开始收到该错误,即使之前使用 gcc 也可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多