Beaglebone 上的 OpenCV 编译错误
Posted
技术标签:
【中文标题】Beaglebone 上的 OpenCV 编译错误【英文标题】:OpenCV compiling error on Beaglebone 【发布时间】:2014-10-16 08:41:58 【问题描述】:我使用这里提到的步骤安装了 Ubuntu 14.04 和 Opencv https://solarianprogrammer.com/2014/04/21/opencv-beaglebone-black-ubuntu/ 我正在尝试编译以下代码(保存在名为 test2.cpp 的文本文件中。将 test2.cpp 和 lena.jpg 复制到 beaglebone 主文件夹):
// Test to convert a color image to gray
// Build on Linux with:
// g++ test2.cpp -o test2 -lopencv_core -lopencv_imgproc -lopencv_highgui
#include <opencv2/opencv.hpp>
#include <iostream>
int main()
// Load the image file and check for success
cv::Mat input = cv::imread("lena.jpg", 1);
if(!input.data)
std::cout << "Unable to open the image file" << std::endl;
return -1;
// Convert the input file to gray
cv::Mat gray_image;
cvtColor(input, gray_image, cv::COLOR_BGR2GRAY);
// Save the result
cv::imwrite("lena_gray.jpg", gray_image);
return 0;
使用 g++ test2.cpp -o test2 -lopencv_core -lopencv_imgproc -lopencv_highgui 我还尝试告诉编译器库在哪里使用 -L /usr/local/lib 。 (在那里找到了 libopencv 文件)。但是每次都报错:
ubuntu@arm:~$ g++ test2.cpp -o test2 -lopencv_core -lopencv_imgproc -lopencv_highgui -L usr/local/lib
/tmp/cckXjOPd.o: In function `main':
test2.cpp:(.text+0x26): undefined reference to `cv::imread(cv::String const&, int)'
test2.cpp:(.text+0xf0): undefined reference to `cv::imwrite(cv::String const&, cv::_InputArray const&, std::vector<int, std::allocator<int=""> > const&)'
collect2: error: ld returned 1 exit status
有人可以帮我吗?任何帮助将不胜感激。
【问题讨论】:
错字:您缺少库路径的前导/
。你需要-L /usr/local/lib
。写一个Makefile
可能会更容易设置这种东西。
我尝试添加前导 / 但得到了同样的错误。
【参考方案1】:
我发现使用以下代码进行编译总是很方便且安全:
g++ test2.cpp -o test2 `pkg-config --libs --cflags opencv`
如果还没有pkg-config
,请安装。
【讨论】:
我尝试了您提供的编译代码。它没有显示任何错误(所以 pkg-config 已经安装了?)但我没有看到任何输出。一个名为 lena_gray.jpg 的文件应该保存在主文件夹中,对吧?但我没有看到任何这样的文件。另外,请注意,我所说的上述代码使用 jpg。但是我在代码中使用了 jpeg,因为我的文件是 jpeg。这会造成问题吗? 谢谢。我应该在编译后运行 ./test2 命令。像魅力一样工作! 如果您想查看编译的详细输出,请将-v
添加到标志中。是的,文件名必须匹配。很高兴它帮助解决了您的问题:)以上是关于Beaglebone 上的 OpenCV 编译错误的主要内容,如果未能解决你的问题,请参考以下文章
Beaglebone Black 和 Qt 上的 ALSA 问题:-lasound 未找到