OpenCV:使用imwrite()函数时无法编译

5
在我的第一个简单的OpenCV应用程序中,我想保存通过摄像头获取的帧,所以我使用了教程上说的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)

阅读一些SO上的文章后,我发现这是关于使用的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

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

更新看起来这个是解决方案。我不知道我缺少了什么该死的标志。

1个回答

15

看起来你缺少了'-lopencv_imgcodecs',这个库可以使用imwrite()函数。
请参考OpenCV imgcodecs头文件这里


2
有趣的事情是,当我切换到clang时,即使之前使用gcc没有问题,现在也开始出现错误了。 - unresolved_external

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接